<entry><literal>pi()</literal></entry>
<entry><literal>3.14159265358979323846</literal></entry>
</row>
+ <row>
+ <entry><literal><function>pow(<replaceable>x</replaceable>, <replaceable>y</replaceable>)</function>, <function>power(<replaceable>x</replaceable>, <replaceable>y</replaceable>)</function></literal></entry>
+ <entry>double</entry>
+ <entry>exponentiation</entry>
+ <entry><literal>pow(2.0, 10)</literal>, <literal>power(2.0, 10)</literal></entry>
+ <entry><literal>1024.0</literal></entry>
+ </row>
<row>
<entry><literal><function>random(<replaceable>lb</replaceable>, <replaceable>ub</replaceable>)</function></literal></entry>
<entry>integer</entry>
return true;
}
+ case PGBENCH_POW:
+ {
+ PgBenchValue *lval = &vargs[0];
+ PgBenchValue *rval = &vargs[1];
+ double ld,
+ rd;
+
+ Assert(nargs == 2);
+
+ if (!coerceToDouble(lval, &ld) ||
+ !coerceToDouble(rval, &rd))
+ return false;
+
+ setDoubleValue(retval, pow(ld, rd));
+
+ return true;
+ }
+
default:
/* cannot get here */
Assert(0);
qr{command=19.: double 19\b},
qr{command=20.: double 20\b},
qr{command=21.: int 9223372036854775807\b},
- qr{command=23.: int [1-9]\b}, ],
+ qr{command=23.: int [1-9]\b},
+ qr{command=24.: double -27\b},
+ qr{command=25.: double 1024\b},
+ qr{command=26.: double 1\b},
+ qr{command=27.: double 1\b},
+ qr{command=28.: double -0.125\b},
+ qr{command=29.: double -0.125\b},
+ qr{command=30.: double -0.00032\b},
+ qr{command=31.: double 8.50705917302346e\+37\b},
+ qr{command=32.: double 1e\+30\b},
+ ],
'pgbench expressions',
{ '001_pgbench_expressions' => q{-- integer functions
\set i1 debug(random(1, 100))
\set i1 0
-- yet another integer function
\set id debug(random_zipfian(1, 9, 1.3))
+--- pow and power
+\set poweri debug(pow(-3,3))
+\set powerd debug(pow(2.0,10))
+\set poweriz debug(pow(0,0))
+\set powerdz debug(pow(0.0,0.0))
+\set powernegi debug(pow(-2,-3))
+\set powernegd debug(pow(-2.0,-3.0))
+\set powernegd2 debug(power(-5.0,-5.0))
+\set powerov debug(pow(9223372036854775807, 2))
+\set powerov2 debug(pow(10,30))
} });
# backslash commands