@@ -3030,6 +3030,347 @@ EndTerm;
30303030#require wordsize >= 4
30313031assert succeeded?
30323032*--#] Issue512_4 :
3033+ *--#[ Issue546 :
3034+ #-
3035+ Off statistics;
3036+ Symbol x,y;
3037+
3038+ Local test =
3039+ + 1
3040+ + 3*x
3041+ + 3/4*x^2
3042+ + (2^y-1)*x^3
3043+ + (2^y)*x^4
3044+ + 1/(2^y-1)*x^5
3045+ + 1/(2^y)*x^6
3046+ + 3/(2^y-1)*x^7
3047+ + 3/(2^y)*x^8
3048+ + (2^y)/(2^y-1)*x^9
3049+ + (2^y-1)/(2^y)*x^10
3050+ + (2^y)/(2^y+1)*x^11
3051+ ;
3052+ .sort
3053+ Drop;
3054+ Local test31 = replace_(y,31)*test;
3055+ Local test32 = replace_(y,32)*test;
3056+
3057+ #message C
3058+ Format C;
3059+ Print +s;
3060+ .sort
3061+ #message Fortran
3062+ Format Fortran;
3063+ Print +s;
3064+ .sort
3065+ #message Doublefortran
3066+ Format Doublefortran;
3067+ Print +s;
3068+ .sort
3069+ #message Quadfortran
3070+ Format Quadfortran;
3071+ Print +s;
3072+ .sort
3073+ #message Fortran90
3074+ Format Fortran90;
3075+ Print +s;
3076+ .sort
3077+ #message Fortran90_ki
3078+ Format Fortran90,_ki;
3079+ Print +s;
3080+ .sort
3081+ #message Pfortran;
3082+ Format Pfortran;
3083+ Print +s;
3084+ .sort
3085+ #message Float
3086+ Format Float;
3087+ Print +s;
3088+ .sort
3089+ #message Normal
3090+ Format Normal;
3091+ Print +s;
3092+ .sort
3093+ .end
3094+ # 32bit FORM prints these differently: there a WORD is 16 bits so 2^31-1 etc
3095+ # all require multiple WORD to store, and so trigger a floating suffix.
3096+ #require wordsize >= 4
3097+ assert succeeded?
3098+ assert stdout =~ exact_pattern(<<' EOF' )
3099+ ~~~C
3100+
3101+ test31 =
3102+ + 1
3103+ + 3*x
3104+ + 3./4.*pow(x,2)
3105+ + 2147483647*pow(x,3)
3106+ + 2147483648*pow(x,4)
3107+ + 1./2147483647.*pow(x,5)
3108+ + 1./2147483648.*pow(x,6)
3109+ + 3./2147483647.*pow(x,7)
3110+ + 3./2147483648.*pow(x,8)
3111+ + 2147483648./2147483647.*pow(x,9)
3112+ + 2147483647./2147483648.*pow(x,10)
3113+ + 2147483648./2147483649.*pow(x,11)
3114+ ;
3115+
3116+ test32 =
3117+ + 1
3118+ + 3*x
3119+ + 3./4.*pow(x,2)
3120+ + 4294967295*pow(x,3)
3121+ + 4294967296.*pow(x,4)
3122+ + 1./4294967295.*pow(x,5)
3123+ + 1./4294967296.*pow(x,6)
3124+ + 1./1431655765.*pow(x,7)
3125+ + 3./4294967296.*pow(x,8)
3126+ + 4294967296./4294967295.*pow(x,9)
3127+ + 4294967295./4294967296.*pow(x,10)
3128+ + 4294967296./4294967297.*pow(x,11)
3129+ ;
3130+
3131+ ~~~Fortran
3132+
3133+ test31 = + 1
3134+ & + 3*x
3135+ & + 3./4.*x**2
3136+ & + 2147483647*x**3
3137+ & + 2147483648.*x**4
3138+ & + 1./2147483647.*x**5
3139+ & + 1./2147483648.*x**6
3140+ & + 3./2147483647.*x**7
3141+ & + 3./2147483648.*x**8
3142+ & + 2147483648./2147483647.*x**9
3143+ & + 2147483647./2147483648.*x**10
3144+ & + 2147483648./2147483649.*x**11
3145+ &
3146+
3147+ test32 = + 1
3148+ & + 3*x
3149+ & + 3./4.*x**2
3150+ & + 4294967295.*x**3
3151+ & + 4294967296.*x**4
3152+ & + 1./4294967295.*x**5
3153+ & + 1./4294967296.*x**6
3154+ & + 1./1431655765.*x**7
3155+ & + 3./4294967296.*x**8
3156+ & + 4294967296./4294967295.*x**9
3157+ & + 4294967295./4294967296.*x**10
3158+ & + 4294967296./4294967297.*x**11
3159+ &
3160+
3161+ ~~~Doublefortran
3162+
3163+ test31 = + 1
3164+ & + 3*x
3165+ & + 3.D0/4.D0*x**2
3166+ & + 2147483647*x**3
3167+ & + 2147483648.D0*x**4
3168+ & + 1.D0/2147483647.D0*x**5
3169+ & + 1.D0/2147483648.D0*x**6
3170+ & + 3.D0/2147483647.D0*x**7
3171+ & + 3.D0/2147483648.D0*x**8
3172+ & + 2147483648.D0/2147483647.D0*x**9
3173+ & + 2147483647.D0/2147483648.D0*x**10
3174+ & + 2147483648.D0/2147483649.D0*x**11
3175+ &
3176+
3177+ test32 = + 1
3178+ & + 3*x
3179+ & + 3.D0/4.D0*x**2
3180+ & + 4294967295.D0*x**3
3181+ & + 4294967296.D0*x**4
3182+ & + 1.D0/4294967295.D0*x**5
3183+ & + 1.D0/4294967296.D0*x**6
3184+ & + 1.D0/1431655765.D0*x**7
3185+ & + 3.D0/4294967296.D0*x**8
3186+ & + 4294967296.D0/4294967295.D0*x**9
3187+ & + 4294967295.D0/4294967296.D0*x**10
3188+ & + 4294967296.D0/4294967297.D0*x**11
3189+ &
3190+
3191+ ~~~Quadfortran
3192+
3193+ test31 = + 1
3194+ & + 3*x
3195+ & + 3.Q0/4.Q0*x**2
3196+ & + 2147483647*x**3
3197+ & + 2147483648.Q0*x**4
3198+ & + 1.Q0/2147483647.Q0*x**5
3199+ & + 1.Q0/2147483648.Q0*x**6
3200+ & + 3.Q0/2147483647.Q0*x**7
3201+ & + 3.Q0/2147483648.Q0*x**8
3202+ & + 2147483648.Q0/2147483647.Q0*x**9
3203+ & + 2147483647.Q0/2147483648.Q0*x**10
3204+ & + 2147483648.Q0/2147483649.Q0*x**11
3205+ &
3206+
3207+ test32 = + 1
3208+ & + 3*x
3209+ & + 3.Q0/4.Q0*x**2
3210+ & + 4294967295.Q0*x**3
3211+ & + 4294967296.Q0*x**4
3212+ & + 1.Q0/4294967295.Q0*x**5
3213+ & + 1.Q0/4294967296.Q0*x**6
3214+ & + 1.Q0/1431655765.Q0*x**7
3215+ & + 3.Q0/4294967296.Q0*x**8
3216+ & + 4294967296.Q0/4294967295.Q0*x**9
3217+ & + 4294967295.Q0/4294967296.Q0*x**10
3218+ & + 4294967296.Q0/4294967297.Q0*x**11
3219+ &
3220+
3221+ ~~~Fortran90
3222+
3223+ test31 = + 1
3224+ & + 3*x
3225+ & + 3./4.*x**2
3226+ & + 2147483647*x**3
3227+ & + 2147483648.*x**4
3228+ & + 1./2147483647.*x**5
3229+ & + 1./2147483648.*x**6
3230+ & + 3./2147483647.*x**7
3231+ & + 3./2147483648.*x**8
3232+ & + 2147483648./2147483647.*x**9
3233+ & + 2147483647./2147483648.*x**10
3234+ & + 2147483648./2147483649.*x**11
3235+ &
3236+
3237+ test32 = + 1
3238+ & + 3*x
3239+ & + 3./4.*x**2
3240+ & + 4294967295.*x**3
3241+ & + 4294967296.*x**4
3242+ & + 1./4294967295.*x**5
3243+ & + 1./4294967296.*x**6
3244+ & + 1./1431655765.*x**7
3245+ & + 3./4294967296.*x**8
3246+ & + 4294967296./4294967295.*x**9
3247+ & + 4294967295./4294967296.*x**10
3248+ & + 4294967296./4294967297.*x**11
3249+ &
3250+
3251+ ~~~Fortran90_ki
3252+
3253+ test31 = + 1_ki
3254+ & + 3_ki*x
3255+ & + 3_ki/4_ki*x**2
3256+ & + 2147483647_ki*x**3
3257+ & + 2147483648_ki*x**4
3258+ & + 1_ki/2147483647_ki*x**5
3259+ & + 1_ki/2147483648_ki*x**6
3260+ & + 3_ki/2147483647_ki*x**7
3261+ & + 3_ki/2147483648_ki*x**8
3262+ & + 2147483648_ki/2147483647_ki*x**9
3263+ & + 2147483647_ki/2147483648_ki*x**10
3264+ & + 2147483648_ki/2147483649_ki*x**11
3265+ &
3266+
3267+ test32 = + 1_ki
3268+ & + 3_ki*x
3269+ & + 3_ki/4_ki*x**2
3270+ & + 4294967295_ki*x**3
3271+ & + 4294967296_ki*x**4
3272+ & + 1_ki/4294967295_ki*x**5
3273+ & + 1_ki/4294967296_ki*x**6
3274+ & + 1_ki/1431655765_ki*x**7
3275+ & + 3_ki/4294967296_ki*x**8
3276+ & + 4294967296_ki/4294967295_ki*x**9
3277+ & + 4294967295_ki/4294967296_ki*x**10
3278+ & + 4294967296_ki/4294967297_ki*x**11
3279+ &
3280+
3281+ ~~~Pfortran
3282+
3283+ test31 = + one
3284+ & + 3*x
3285+ & + ((one*3)/4)*x**2
3286+ & + 2147483647*x**3
3287+ & + 2147483648.D0*x**4
3288+ & + (one/2147483647)*x**5
3289+ & + (one/2147483648.D0)*x**6
3290+ & + ((one*3)/2147483647)*x**7
3291+ & + ((one*3)/2147483648.D0)*x**8
3292+ & + ((one*2147483648.D0)/2147483647)*x**9
3293+ & + ((one*2147483647)/2147483648.D0)*x**10
3294+ & + ((one*2147483648.D0)/2147483649.D0)*x**11
3295+ &
3296+
3297+ test32 = + one
3298+ & + 3*x
3299+ & + ((one*3)/4)*x**2
3300+ & + 4294967295.D0*x**3
3301+ & + 4294967296.D0*x**4
3302+ & + (one/4294967295.D0)*x**5
3303+ & + (one/4294967296.D0)*x**6
3304+ & + (one/1431655765)*x**7
3305+ & + ((one*3)/4294967296.D0)*x**8
3306+ & + ((one*4294967296.D0)/4294967295.D0)*x**9
3307+ & + ((one*4294967295.D0)/4294967296.D0)*x**10
3308+ & + ((one*4294967296.D0)/4294967297.D0)*x**11
3309+ &
3310+
3311+ ~~~Float
3312+
3313+ test31 = + 1.E+0
3314+ & + 3.E+0*x
3315+ & + 7.5E-1*x**2
3316+ & + 2.147483647E+9*x**3
3317+ & + 2.147483648E+9*x**4
3318+ & + 4.656612875E-10*x**5
3319+ & + 4.656612873E-10*x**6
3320+ & + 1.396983862E-9*x**7
3321+ & + 1.396983861E-9*x**8
3322+ & + 1.000000000E+0*x**9
3323+ & + 9.999999995E-1*x**10
3324+ & + 9.999999995E-1*x**11
3325+ &
3326+
3327+ test32 = + 1.E+0
3328+ & + 3.E+0*x
3329+ & + 7.5E-1*x**2
3330+ & + 4.294967295E+9*x**3
3331+ & + 4.294967296E+9*x**4
3332+ & + 2.328306437E-10*x**5
3333+ & + 2.328306436E-10*x**6
3334+ & + 6.984919311E-10*x**7
3335+ & + 6.984919309E-10*x**8
3336+ & + 1.000000000E+0*x**9
3337+ & + 9.999999997E-1*x**10
3338+ & + 9.999999997E-1*x**11
3339+ &
3340+
3341+ ~~~Normal
3342+
3343+ test31 =
3344+ + 1
3345+ + 3*x
3346+ + 3/4*x^2
3347+ + 2147483647*x^3
3348+ + 2147483648*x^4
3349+ + 1/2147483647*x^5
3350+ + 1/2147483648*x^6
3351+ + 3/2147483647*x^7
3352+ + 3/2147483648*x^8
3353+ + 2147483648/2147483647*x^9
3354+ + 2147483647/2147483648*x^10
3355+ + 2147483648/2147483649*x^11
3356+ ;
3357+
3358+ test32 =
3359+ + 1
3360+ + 3*x
3361+ + 3/4*x^2
3362+ + 4294967295*x^3
3363+ + 4294967296*x^4
3364+ + 1/4294967295*x^5
3365+ + 1/4294967296*x^6
3366+ + 1/1431655765*x^7
3367+ + 3/4294967296*x^8
3368+ + 4294967296/4294967295*x^9
3369+ + 4294967295/4294967296*x^10
3370+ + 4294967296/4294967297*x^11
3371+ ;
3372+ EOF
3373+ *--#] Issue546 :
30333374*--#[ Issue525 :
30343375#:threadbucketsize 5
30353376#:processbucketsize 5
0 commit comments