@@ -216,16 +216,6 @@ SELECT f.f1, f.f1 + '-10' AS x
216
216
1.2345678901234e-200 | -10
217
217
(3 rows)
218
218
219
- SELECT f.f1, f.f1 / '-10' AS x
220
- FROM FLOAT8_TBL f
221
- WHERE f.f1 > '0.0';
222
- f1 | x
223
- ----------------------+-----------------------
224
- 1004.3 | -100.42999999999999
225
- 1.2345678901234e+200 | -1.2345678901234e+199
226
- 1.2345678901234e-200 | -1.2345678901234e-201
227
- (3 rows)
228
-
229
219
SELECT f.f1, f.f1 - '-10' AS x
230
220
FROM FLOAT8_TBL f
231
221
WHERE f.f1 > '0.0';
@@ -236,13 +226,6 @@ SELECT f.f1, f.f1 - '-10' AS x
236
226
1.2345678901234e-200 | 10
237
227
(3 rows)
238
228
239
- SELECT f.f1 ^ '2.0' AS square_f1
240
- FROM FLOAT8_TBL f where f.f1 = '1004.3';
241
- square_f1
242
- --------------------
243
- 1008618.4899999999
244
- (1 row)
245
-
246
229
-- absolute value
247
230
SELECT f.f1, @f.f1 AS abs_f1
248
231
FROM FLOAT8_TBL f;
@@ -294,6 +277,16 @@ SELECT |/ float8 '64' AS eight;
294
277
8
295
278
(1 row)
296
279
280
+ SELECT f.f1, |/f.f1 AS sqrt_f1
281
+ FROM FLOAT8_TBL f
282
+ WHERE f.f1 > '0.0';
283
+ f1 | sqrt_f1
284
+ ----------------------+-----------------------
285
+ 1004.3 | 31.6906926399535
286
+ 1.2345678901234e+200 | 1.11111110611109e+100
287
+ 1.2345678901234e-200 | 1.11111110611109e-100
288
+ (3 rows)
289
+
297
290
-- power
298
291
SELECT power(float8 '144', float8 '0.5');
299
292
power
@@ -493,13 +486,41 @@ SELECT power(float8 '-inf', float8 '-inf');
493
486
0
494
487
(1 row)
495
488
489
+ -- take exp of ln(f.f1)
490
+ SELECT f.f1, exp(ln(f.f1)) AS exp_ln_f1
491
+ FROM FLOAT8_TBL f
492
+ WHERE f.f1 > '0.0';
493
+ f1 | exp_ln_f1
494
+ ----------------------+-----------------------
495
+ 1004.3 | 1004.3
496
+ 1.2345678901234e+200 | 1.23456789012338e+200
497
+ 1.2345678901234e-200 | 1.23456789012339e-200
498
+ (3 rows)
499
+
496
500
-- check edge cases for exp
497
501
SELECT exp('inf'::float8), exp('-inf'::float8), exp('nan'::float8);
498
502
exp | exp | exp
499
503
----------+-----+-----
500
504
Infinity | 0 | NaN
501
505
(1 row)
502
506
507
+ -- cube root
508
+ SELECT ||/ float8 '27' AS three;
509
+ three
510
+ -------
511
+ 3
512
+ (1 row)
513
+
514
+ SELECT f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f;
515
+ f1 | cbrt_f1
516
+ ----------------------+----------------------
517
+ 0 | 0
518
+ 1004.3 | 10.014312837827
519
+ -34.84 | -3.26607421344208
520
+ 1.2345678901234e+200 | 4.97933859234765e+66
521
+ 1.2345678901234e-200 | 2.3112042409018e-67
522
+ (5 rows)
523
+
503
524
SELECT * FROM FLOAT8_TBL;
504
525
f1
505
526
----------------------
@@ -526,12 +547,45 @@ SELECT ln(f.f1) from FLOAT8_TBL f where f.f1 < '0.0' ;
526
547
ERROR: cannot take logarithm of a negative number
527
548
SELECT f.f1 / '0.0' from FLOAT8_TBL f;
528
549
ERROR: division by zero
550
+ -- hyperbolic functions
551
+ -- we run these with extra_float_digits = 0 too, since different platforms
552
+ -- tend to produce results that vary in the last place.
553
+ SELECT sinh(float8 '1');
554
+ sinh
555
+ -----------------
556
+ 1.1752011936438
557
+ (1 row)
558
+
559
+ SELECT cosh(float8 '1');
560
+ cosh
561
+ ------------------
562
+ 1.54308063481524
563
+ (1 row)
564
+
565
+ SELECT tanh(float8 '1');
566
+ tanh
567
+ -------------------
568
+ 0.761594155955765
569
+ (1 row)
570
+
529
571
SELECT asinh(float8 '1');
530
572
asinh
531
573
-------------------
532
574
0.881373587019543
533
575
(1 row)
534
576
577
+ SELECT acosh(float8 '2');
578
+ acosh
579
+ ------------------
580
+ 1.31695789692482
581
+ (1 row)
582
+
583
+ SELECT atanh(float8 '0.5');
584
+ atanh
585
+ -------------------
586
+ 0.549306144334055
587
+ (1 row)
588
+
535
589
-- test Inf/NaN cases for hyperbolic functions
536
590
SELECT sinh(float8 'infinity');
537
591
sinh
0 commit comments