9
9
* workings can be found in the book "Software Solutions in C" by
10
10
* Dale Schumacher, Academic Press, ISBN: 0-12-632360-7.
11
11
*
12
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/cash.c,v 1.15 1997/09/18 20:22:12 momjian Exp $
12
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/cash.c,v 1.16 1997/09/20 16:15:34 thomas Exp $
13
13
*/
14
14
15
15
#include <stdio.h>
@@ -366,11 +366,11 @@ cash_mi(Cash *c1, Cash *c2)
366
366
} /* cash_mi() */
367
367
368
368
369
- /* cash_mul ()
370
- * Multiply cash by floating point number .
369
+ /* cash_mul_flt8 ()
370
+ * Multiply cash by float8 .
371
371
*/
372
372
Cash *
373
- cash_mul (Cash * c , float8 * f )
373
+ cash_mul_flt8 (Cash * c , float8 * f )
374
374
{
375
375
Cash * result ;
376
376
@@ -383,17 +383,27 @@ cash_mul(Cash *c, float8 *f)
383
383
* result = ((* f ) * (* c ));
384
384
385
385
return (result );
386
- } /* cash_mul () */
386
+ } /* cash_mul_flt8 () */
387
387
388
388
389
- /* cash_div()
390
- * Divide cash by floating point number.
389
+ /* flt8_mul_cash()
390
+ * Multiply float8 by cash.
391
+ */
392
+ Cash *
393
+ flt8_mul_cash (float8 * f , Cash * c )
394
+ {
395
+ return (cash_mul_flt8 (c , f ));
396
+ } /* flt8_mul_cash() */
397
+
398
+
399
+ /* cash_div_flt8()
400
+ * Divide cash by float8.
391
401
*
392
402
* XXX Don't know if rounding or truncating is correct behavior.
393
403
* Round for now. - tgl 97/04/15
394
404
*/
395
405
Cash *
396
- cash_div (Cash * c , float8 * f )
406
+ cash_div_flt8 (Cash * c , float8 * f )
397
407
{
398
408
Cash * result ;
399
409
@@ -409,7 +419,174 @@ cash_div(Cash *c, float8 *f)
409
419
* result = rint (* c / * f );
410
420
411
421
return (result );
412
- } /* cash_div() */
422
+ } /* cash_div_flt8() */
423
+
424
+ /* cash_mul_flt4()
425
+ * Multiply cash by float4.
426
+ */
427
+ Cash *
428
+ cash_mul_flt4 (Cash * c , float4 * f )
429
+ {
430
+ Cash * result ;
431
+
432
+ if (!PointerIsValid (f ) || !PointerIsValid (c ))
433
+ return (NULL );
434
+
435
+ if (!PointerIsValid (result = PALLOCTYPE (Cash )))
436
+ elog (WARN , "Memory allocation failed, can't multiply cash" , NULL );
437
+
438
+ * result = ((* f ) * (* c ));
439
+
440
+ return (result );
441
+ } /* cash_mul_flt4() */
442
+
443
+
444
+ /* flt4_mul_cash()
445
+ * Multiply float4 by float4.
446
+ */
447
+ Cash *
448
+ flt4_mul_cash (float4 * f , Cash * c )
449
+ {
450
+ return (cash_mul_flt4 (c , f ));
451
+ } /* flt4_mul_cash() */
452
+
453
+
454
+ /* cash_div_flt4()
455
+ * Divide cash by float4.
456
+ *
457
+ * XXX Don't know if rounding or truncating is correct behavior.
458
+ * Round for now. - tgl 97/04/15
459
+ */
460
+ Cash *
461
+ cash_div_flt4 (Cash * c , float4 * f )
462
+ {
463
+ Cash * result ;
464
+
465
+ if (!PointerIsValid (f ) || !PointerIsValid (c ))
466
+ return (NULL );
467
+
468
+ if (!PointerIsValid (result = PALLOCTYPE (Cash )))
469
+ elog (WARN , "Memory allocation failed, can't divide cash" , NULL );
470
+
471
+ if (* f == 0.0 )
472
+ elog (WARN , "cash_div: divide by 0.0 error" );
473
+
474
+ * result = rint (* c / * f );
475
+
476
+ return (result );
477
+ } /* cash_div_flt4() */
478
+
479
+
480
+ /* cash_mul_int4()
481
+ * Multiply cash by int4.
482
+ */
483
+ Cash *
484
+ cash_mul_int4 (Cash * c , int4 i )
485
+ {
486
+ Cash * result ;
487
+
488
+ if (!PointerIsValid (c ))
489
+ return (NULL );
490
+
491
+ if (!PointerIsValid (result = PALLOCTYPE (Cash )))
492
+ elog (WARN , "Memory allocation failed, can't multiply cash" , NULL );
493
+
494
+ * result = ((i ) * (* c ));
495
+
496
+ return (result );
497
+ } /* cash_mul_int4() */
498
+
499
+
500
+ /* int4_mul_cash()
501
+ * Multiply int4 by cash.
502
+ */
503
+ Cash *
504
+ int4_mul_cash (int4 i , Cash * c )
505
+ {
506
+ return (cash_mul_int4 (c , i ));
507
+ } /* int4_mul_cash() */
508
+
509
+
510
+ /* cash_div_int4()
511
+ * Divide cash by 4-byte integer.
512
+ *
513
+ * XXX Don't know if rounding or truncating is correct behavior.
514
+ * Round for now. - tgl 97/04/15
515
+ */
516
+ Cash *
517
+ cash_div_int4 (Cash * c , int4 i )
518
+ {
519
+ Cash * result ;
520
+
521
+ if (!PointerIsValid (c ))
522
+ return (NULL );
523
+
524
+ if (!PointerIsValid (result = PALLOCTYPE (Cash )))
525
+ elog (WARN , "Memory allocation failed, can't divide cash" , NULL );
526
+
527
+ if (i == 0 )
528
+ elog (WARN , "cash_idiv: divide by 0 error" );
529
+
530
+ * result = rint (* c / i );
531
+
532
+ return (result );
533
+ } /* cash_div_int4() */
534
+
535
+
536
+ /* cash_mul_int2()
537
+ * Multiply cash by int2.
538
+ */
539
+ Cash *
540
+ cash_mul_int2 (Cash * c , int2 s )
541
+ {
542
+ Cash * result ;
543
+
544
+ if (!PointerIsValid (c ))
545
+ return (NULL );
546
+
547
+ if (!PointerIsValid (result = PALLOCTYPE (Cash )))
548
+ elog (WARN , "Memory allocation failed, can't multiply cash" , NULL );
549
+
550
+ * result = ((s ) * (* c ));
551
+
552
+ return (result );
553
+ } /* cash_mul_int2() */
554
+
555
+
556
+ /* int2_mul_cash()
557
+ * Multiply int2 by cash.
558
+ */
559
+ Cash *
560
+ int2_mul_cash (int2 s , Cash * c )
561
+ {
562
+ return (cash_mul_int2 (c , s ));
563
+ } /* int2_mul_cash() */
564
+
565
+
566
+ /* cash_div_int2()
567
+ * Divide cash by int2.
568
+ *
569
+ * XXX Don't know if rounding or truncating is correct behavior.
570
+ * Round for now. - tgl 97/04/15
571
+ */
572
+ Cash *
573
+ cash_div_int2 (Cash * c , int2 s )
574
+ {
575
+ Cash * result ;
576
+
577
+ if (!PointerIsValid (c ))
578
+ return (NULL );
579
+
580
+ if (!PointerIsValid (result = PALLOCTYPE (Cash )))
581
+ elog (WARN , "Memory allocation failed, can't divide cash" , NULL );
582
+
583
+ if (s == 0 )
584
+ elog (WARN , "cash_div: divide by 0 error" );
585
+
586
+ * result = rint (* c / s );
587
+
588
+ return (result );
589
+ } /* cash_div_int2() */
413
590
414
591
415
592
/* cashlarger()
0 commit comments