5
5
*
6
6
* 1998 Jan Wieck
7
7
*
8
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.49 2001/12/11 02:02:12 tgl Exp $
8
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.50 2002/02/18 14:25:40 momjian Exp $
9
9
*
10
10
* ----------
11
11
*/
35
35
* Local definitions
36
36
* ----------
37
37
*/
38
- #ifndef MIN
39
- #define MIN (a ,b ) (((a)<(b)) ? (a) : (b))
40
- #endif
41
- #ifndef MAX
42
- #define MAX (a ,b ) (((a)>(b)) ? (a) : (b))
43
- #endif
44
-
45
38
#ifndef NAN
46
39
#define NAN (0.0/0.0)
47
40
#endif
@@ -484,8 +477,8 @@ numeric_round(PG_FUNCTION_ARGS)
484
477
* Limit the scale value to avoid possible overflow in calculations
485
478
* below.
486
479
*/
487
- scale = MIN (NUMERIC_MAX_RESULT_SCALE ,
488
- MAX (- NUMERIC_MAX_RESULT_SCALE , scale ));
480
+ scale = Min (NUMERIC_MAX_RESULT_SCALE ,
481
+ Max (- NUMERIC_MAX_RESULT_SCALE , scale ));
489
482
490
483
/*
491
484
* Unpack the argument and round it at the proper digit position
@@ -530,7 +523,7 @@ numeric_round(PG_FUNCTION_ARGS)
530
523
/*
531
524
* Set result's scale to something reasonable.
532
525
*/
533
- scale = MIN (NUMERIC_MAX_DISPLAY_SCALE , MAX (0 , scale ));
526
+ scale = Min (NUMERIC_MAX_DISPLAY_SCALE , Max (0 , scale ));
534
527
arg .rscale = scale ;
535
528
arg .dscale = scale ;
536
529
@@ -570,21 +563,21 @@ numeric_trunc(PG_FUNCTION_ARGS)
570
563
* Limit the scale value to avoid possible overflow in calculations
571
564
* below.
572
565
*/
573
- scale = MIN (NUMERIC_MAX_RESULT_SCALE ,
574
- MAX (- NUMERIC_MAX_RESULT_SCALE , scale ));
566
+ scale = Min (NUMERIC_MAX_RESULT_SCALE ,
567
+ Max (- NUMERIC_MAX_RESULT_SCALE , scale ));
575
568
576
569
/*
577
570
* Unpack the argument and truncate it at the proper digit position
578
571
*/
579
572
init_var (& arg );
580
573
set_var_from_num (num , & arg );
581
574
582
- arg .ndigits = MIN (arg .ndigits , MAX (0 , arg .weight + scale + 1 ));
575
+ arg .ndigits = Min (arg .ndigits , Max (0 , arg .weight + scale + 1 ));
583
576
584
577
/*
585
578
* Set result's scale to something reasonable.
586
579
*/
587
- scale = MIN (NUMERIC_MAX_DISPLAY_SCALE , MAX (0 , scale ));
580
+ scale = Min (NUMERIC_MAX_DISPLAY_SCALE , Max (0 , scale ));
588
581
arg .rscale = scale ;
589
582
arg .dscale = scale ;
590
583
@@ -1214,11 +1207,11 @@ numeric_sqrt(PG_FUNCTION_ARGS)
1214
1207
1215
1208
set_var_from_num (num , & arg );
1216
1209
1217
- res_dscale = MAX (arg .dscale , NUMERIC_MIN_DISPLAY_SCALE );
1218
- res_dscale = MIN (res_dscale , NUMERIC_MAX_DISPLAY_SCALE );
1219
- global_rscale = MAX (arg .rscale , NUMERIC_MIN_RESULT_SCALE );
1220
- global_rscale = MAX (global_rscale , res_dscale + 4 );
1221
- global_rscale = MIN (global_rscale , NUMERIC_MAX_RESULT_SCALE );
1210
+ res_dscale = Max (arg .dscale , NUMERIC_MIN_DISPLAY_SCALE );
1211
+ res_dscale = Min (res_dscale , NUMERIC_MAX_DISPLAY_SCALE );
1212
+ global_rscale = Max (arg .rscale , NUMERIC_MIN_RESULT_SCALE );
1213
+ global_rscale = Max (global_rscale , res_dscale + 4 );
1214
+ global_rscale = Min (global_rscale , NUMERIC_MAX_RESULT_SCALE );
1222
1215
1223
1216
sqrt_var (& arg , & result );
1224
1217
@@ -1261,11 +1254,11 @@ numeric_exp(PG_FUNCTION_ARGS)
1261
1254
init_var (& result );
1262
1255
set_var_from_num (num , & arg );
1263
1256
1264
- res_dscale = MAX (arg .dscale , NUMERIC_MIN_DISPLAY_SCALE );
1265
- res_dscale = MIN (res_dscale , NUMERIC_MAX_DISPLAY_SCALE );
1266
- global_rscale = MAX (arg .rscale , NUMERIC_MIN_RESULT_SCALE );
1267
- global_rscale = MAX (global_rscale , res_dscale + 4 );
1268
- global_rscale = MIN (global_rscale , NUMERIC_MAX_RESULT_SCALE );
1257
+ res_dscale = Max (arg .dscale , NUMERIC_MIN_DISPLAY_SCALE );
1258
+ res_dscale = Min (res_dscale , NUMERIC_MAX_DISPLAY_SCALE );
1259
+ global_rscale = Max (arg .rscale , NUMERIC_MIN_RESULT_SCALE );
1260
+ global_rscale = Max (global_rscale , res_dscale + 4 );
1261
+ global_rscale = Min (global_rscale , NUMERIC_MAX_RESULT_SCALE );
1269
1262
1270
1263
exp_var (& arg , & result );
1271
1264
@@ -1308,11 +1301,11 @@ numeric_ln(PG_FUNCTION_ARGS)
1308
1301
init_var (& result );
1309
1302
set_var_from_num (num , & arg );
1310
1303
1311
- res_dscale = MAX (arg .dscale , NUMERIC_MIN_DISPLAY_SCALE );
1312
- res_dscale = MIN (res_dscale , NUMERIC_MAX_DISPLAY_SCALE );
1313
- global_rscale = MAX (arg .rscale , NUMERIC_MIN_RESULT_SCALE );
1314
- global_rscale = MAX (global_rscale , res_dscale + 4 );
1315
- global_rscale = MIN (global_rscale , NUMERIC_MAX_RESULT_SCALE );
1304
+ res_dscale = Max (arg .dscale , NUMERIC_MIN_DISPLAY_SCALE );
1305
+ res_dscale = Min (res_dscale , NUMERIC_MAX_DISPLAY_SCALE );
1306
+ global_rscale = Max (arg .rscale , NUMERIC_MIN_RESULT_SCALE );
1307
+ global_rscale = Max (global_rscale , res_dscale + 4 );
1308
+ global_rscale = Min (global_rscale , NUMERIC_MAX_RESULT_SCALE );
1316
1309
1317
1310
ln_var (& arg , & result );
1318
1311
@@ -1359,11 +1352,11 @@ numeric_log(PG_FUNCTION_ARGS)
1359
1352
set_var_from_num (num1 , & arg1 );
1360
1353
set_var_from_num (num2 , & arg2 );
1361
1354
1362
- res_dscale = MAX (arg1 .dscale + arg2 .dscale , NUMERIC_MIN_DISPLAY_SCALE );
1363
- res_dscale = MIN (res_dscale , NUMERIC_MAX_DISPLAY_SCALE );
1364
- global_rscale = MAX (arg1 .rscale + arg2 .rscale , NUMERIC_MIN_RESULT_SCALE );
1365
- global_rscale = MAX (global_rscale , res_dscale + 4 );
1366
- global_rscale = MIN (global_rscale , NUMERIC_MAX_RESULT_SCALE );
1355
+ res_dscale = Max (arg1 .dscale + arg2 .dscale , NUMERIC_MIN_DISPLAY_SCALE );
1356
+ res_dscale = Min (res_dscale , NUMERIC_MAX_DISPLAY_SCALE );
1357
+ global_rscale = Max (arg1 .rscale + arg2 .rscale , NUMERIC_MIN_RESULT_SCALE );
1358
+ global_rscale = Max (global_rscale , res_dscale + 4 );
1359
+ global_rscale = Min (global_rscale , NUMERIC_MAX_RESULT_SCALE );
1367
1360
1368
1361
/*
1369
1362
* Call log_var() to compute and return the result
@@ -1414,11 +1407,11 @@ numeric_power(PG_FUNCTION_ARGS)
1414
1407
set_var_from_num (num1 , & arg1 );
1415
1408
set_var_from_num (num2 , & arg2 );
1416
1409
1417
- res_dscale = MAX (arg1 .dscale + arg2 .dscale , NUMERIC_MIN_DISPLAY_SCALE );
1418
- res_dscale = MIN (res_dscale , NUMERIC_MAX_DISPLAY_SCALE );
1419
- global_rscale = MAX (arg1 .rscale + arg2 .rscale , NUMERIC_MIN_RESULT_SCALE );
1420
- global_rscale = MAX (global_rscale , res_dscale + 4 );
1421
- global_rscale = MIN (global_rscale , NUMERIC_MAX_RESULT_SCALE );
1410
+ res_dscale = Max (arg1 .dscale + arg2 .dscale , NUMERIC_MIN_DISPLAY_SCALE );
1411
+ res_dscale = Min (res_dscale , NUMERIC_MAX_DISPLAY_SCALE );
1412
+ global_rscale = Max (arg1 .rscale + arg2 .rscale , NUMERIC_MIN_RESULT_SCALE );
1413
+ global_rscale = Max (global_rscale , res_dscale + 4 );
1414
+ global_rscale = Min (global_rscale , NUMERIC_MAX_RESULT_SCALE );
1422
1415
1423
1416
/*
1424
1417
* Call log_var() to compute and return the result
@@ -2540,12 +2533,12 @@ get_str_from_var(NumericVar *var, int dscale)
2540
2533
}
2541
2534
}
2542
2535
else
2543
- var -> ndigits = MAX (0 , MIN (i , var -> ndigits ));
2536
+ var -> ndigits = Max (0 , Min (i , var -> ndigits ));
2544
2537
2545
2538
/*
2546
2539
* Allocate space for the result
2547
2540
*/
2548
- str = palloc (MAX (0 , dscale ) + MAX (0 , var -> weight ) + 4 );
2541
+ str = palloc (Max (0 , dscale ) + Max (0 , var -> weight ) + 4 );
2549
2542
cp = str ;
2550
2543
2551
2544
/*
@@ -2557,7 +2550,7 @@ get_str_from_var(NumericVar *var, int dscale)
2557
2550
/*
2558
2551
* Output all digits before the decimal point
2559
2552
*/
2560
- i = MAX (var -> weight , 0 );
2553
+ i = Max (var -> weight , 0 );
2561
2554
d = 0 ;
2562
2555
2563
2556
while (i >= 0 )
@@ -2625,7 +2618,7 @@ make_result(NumericVar *var)
2625
2618
return result ;
2626
2619
}
2627
2620
2628
- n = MAX (0 , MIN (var -> ndigits , var -> weight + var -> rscale + 1 ));
2621
+ n = Max (0 , Min (var -> ndigits , var -> weight + var -> rscale + 1 ));
2629
2622
2630
2623
/* truncate leading zeroes */
2631
2624
while (n > 0 && * digit == 0 )
@@ -2717,7 +2710,7 @@ apply_typmod(NumericVar *var, int32 typmod)
2717
2710
}
2718
2711
}
2719
2712
else
2720
- var -> ndigits = MAX (0 , MIN (i , var -> ndigits ));
2713
+ var -> ndigits = Max (0 , Min (i , var -> ndigits ));
2721
2714
2722
2715
/*
2723
2716
* Check for overflow - note we can't do this before rounding, because
@@ -2825,8 +2818,8 @@ add_var(NumericVar *var1, NumericVar *var2, NumericVar *result)
2825
2818
* ----------
2826
2819
*/
2827
2820
zero_var (result );
2828
- result -> rscale = MAX (var1 -> rscale , var2 -> rscale );
2829
- result -> dscale = MAX (var1 -> dscale , var2 -> dscale );
2821
+ result -> rscale = Max (var1 -> rscale , var2 -> rscale );
2822
+ result -> dscale = Max (var1 -> dscale , var2 -> dscale );
2830
2823
break ;
2831
2824
2832
2825
case 1 :
@@ -2869,8 +2862,8 @@ add_var(NumericVar *var1, NumericVar *var2, NumericVar *result)
2869
2862
* ----------
2870
2863
*/
2871
2864
zero_var (result );
2872
- result -> rscale = MAX (var1 -> rscale , var2 -> rscale );
2873
- result -> dscale = MAX (var1 -> dscale , var2 -> dscale );
2865
+ result -> rscale = Max (var1 -> rscale , var2 -> rscale );
2866
+ result -> dscale = Max (var1 -> dscale , var2 -> dscale );
2874
2867
break ;
2875
2868
2876
2869
case 1 :
@@ -2949,8 +2942,8 @@ sub_var(NumericVar *var1, NumericVar *var2, NumericVar *result)
2949
2942
* ----------
2950
2943
*/
2951
2944
zero_var (result );
2952
- result -> rscale = MAX (var1 -> rscale , var2 -> rscale );
2953
- result -> dscale = MAX (var1 -> dscale , var2 -> dscale );
2945
+ result -> rscale = Max (var1 -> rscale , var2 -> rscale );
2946
+ result -> dscale = Max (var1 -> dscale , var2 -> dscale );
2954
2947
break ;
2955
2948
2956
2949
case 1 :
@@ -2993,8 +2986,8 @@ sub_var(NumericVar *var1, NumericVar *var2, NumericVar *result)
2993
2986
* ----------
2994
2987
*/
2995
2988
zero_var (result );
2996
- result -> rscale = MAX (var1 -> rscale , var2 -> rscale );
2997
- result -> dscale = MAX (var1 -> dscale , var2 -> dscale );
2989
+ result -> rscale = Max (var1 -> rscale , var2 -> rscale );
2990
+ result -> dscale = Max (var1 -> dscale , var2 -> dscale );
2998
2991
break ;
2999
2992
3000
2993
case 1 :
@@ -3344,22 +3337,22 @@ select_div_scale(NumericVar *var1, NumericVar *var2)
3344
3337
* The minimum and maximum scales are compile time options from
3345
3338
* numeric.h):
3346
3339
*
3347
- * DR = MIN(MAX (D1 + D2, MIN_DISPLAY_SCALE), MAX_DISPLAY_SCALE)
3348
- * SR = MIN(MAX(MAX (S1 + S2, DR + 4), MIN_RESULT_SCALE), MAX_RESULT_SCALE)
3340
+ * DR = Min(Max (D1 + D2, MIN_DISPLAY_SCALE), MAX_DISPLAY_SCALE)
3341
+ * SR = Min(Max(Max (S1 + S2, DR + 4), MIN_RESULT_SCALE), MAX_RESULT_SCALE)
3349
3342
*
3350
3343
* By default, any result is computed with a minimum of 34 digits
3351
3344
* after the decimal point or at least with 4 digits more than
3352
3345
* displayed.
3353
3346
* ----------
3354
3347
*/
3355
3348
res_dscale = var1 -> dscale + var2 -> dscale ;
3356
- res_dscale = MAX (res_dscale , NUMERIC_MIN_DISPLAY_SCALE );
3357
- res_dscale = MIN (res_dscale , NUMERIC_MAX_DISPLAY_SCALE );
3349
+ res_dscale = Max (res_dscale , NUMERIC_MIN_DISPLAY_SCALE );
3350
+ res_dscale = Min (res_dscale , NUMERIC_MAX_DISPLAY_SCALE );
3358
3351
3359
3352
res_rscale = var1 -> rscale + var2 -> rscale ;
3360
- res_rscale = MAX (res_rscale , res_dscale + 4 );
3361
- res_rscale = MAX (res_rscale , NUMERIC_MIN_RESULT_SCALE );
3362
- res_rscale = MIN (res_rscale , NUMERIC_MAX_RESULT_SCALE );
3353
+ res_rscale = Max (res_rscale , res_dscale + 4 );
3354
+ res_rscale = Max (res_rscale , NUMERIC_MIN_RESULT_SCALE );
3355
+ res_rscale = Min (res_rscale , NUMERIC_MAX_RESULT_SCALE );
3363
3356
global_rscale = res_rscale ;
3364
3357
3365
3358
return res_dscale ;
@@ -3398,15 +3391,15 @@ mod_var(NumericVar *var1, NumericVar *var2, NumericVar *result)
3398
3391
tmp .dscale = div_dscale ;
3399
3392
3400
3393
/* do trunc() by forgetting digits to the right of the decimal point */
3401
- tmp .ndigits = MAX (0 , MIN (tmp .ndigits , tmp .weight + 1 ));
3394
+ tmp .ndigits = Max (0 , Min (tmp .ndigits , tmp .weight + 1 ));
3402
3395
3403
3396
global_rscale = var2 -> rscale + tmp .rscale ;
3404
3397
3405
3398
mul_var (var2 , & tmp , & tmp );
3406
3399
3407
3400
sub_var (var1 , & tmp , result );
3408
3401
3409
- result -> dscale = MAX (var1 -> dscale , var2 -> dscale );
3402
+ result -> dscale = Max (var1 -> dscale , var2 -> dscale );
3410
3403
3411
3404
global_rscale = save_global_rscale ;
3412
3405
free_var (& tmp );
@@ -3429,7 +3422,7 @@ ceil_var(NumericVar *var, NumericVar *result)
3429
3422
set_var_from_var (var , & tmp );
3430
3423
3431
3424
tmp .rscale = 0 ;
3432
- tmp .ndigits = MIN (tmp .ndigits , MAX (0 , tmp .weight + 1 ));
3425
+ tmp .ndigits = Min (tmp .ndigits , Max (0 , tmp .weight + 1 ));
3433
3426
if (tmp .sign == NUMERIC_POS && cmp_var (var , & tmp ) != 0 )
3434
3427
add_var (& tmp , & const_one , & tmp );
3435
3428
@@ -3454,7 +3447,7 @@ floor_var(NumericVar *var, NumericVar *result)
3454
3447
set_var_from_var (var , & tmp );
3455
3448
3456
3449
tmp .rscale = 0 ;
3457
- tmp .ndigits = MIN (tmp .ndigits , MAX (0 , tmp .weight + 1 ));
3450
+ tmp .ndigits = Min (tmp .ndigits , Max (0 , tmp .weight + 1 ));
3458
3451
if (tmp .sign == NUMERIC_NEG && cmp_var (var , & tmp ) != 0 )
3459
3452
sub_var (& tmp , & const_one , & tmp );
3460
3453
@@ -3860,9 +3853,9 @@ add_abs(NumericVar *var1, NumericVar *var2, NumericVar *result)
3860
3853
NumericDigit * var1digits = var1 -> digits ;
3861
3854
NumericDigit * var2digits = var2 -> digits ;
3862
3855
3863
- res_weight = MAX (var1 -> weight , var2 -> weight ) + 1 ;
3864
- res_rscale = MAX (var1 -> rscale , var2 -> rscale );
3865
- res_dscale = MAX (var1 -> dscale , var2 -> dscale );
3856
+ res_weight = Max (var1 -> weight , var2 -> weight ) + 1 ;
3857
+ res_rscale = Max (var1 -> rscale , var2 -> rscale );
3858
+ res_dscale = Max (var1 -> dscale , var2 -> dscale );
3866
3859
res_ndigits = res_rscale + res_weight + 1 ;
3867
3860
if (res_ndigits <= 0 )
3868
3861
res_ndigits = 1 ;
@@ -3948,8 +3941,8 @@ sub_abs(NumericVar *var1, NumericVar *var2, NumericVar *result)
3948
3941
NumericDigit * var2digits = var2 -> digits ;
3949
3942
3950
3943
res_weight = var1 -> weight ;
3951
- res_rscale = MAX (var1 -> rscale , var2 -> rscale );
3952
- res_dscale = MAX (var1 -> dscale , var2 -> dscale );
3944
+ res_rscale = Max (var1 -> rscale , var2 -> rscale );
3945
+ res_dscale = Max (var1 -> dscale , var2 -> dscale );
3953
3946
res_ndigits = res_rscale + res_weight + 1 ;
3954
3947
if (res_ndigits <= 0 )
3955
3948
res_ndigits = 1 ;
0 commit comments