diff --git a/pom.xml b/pom.xml index 335cf5358..b3ecbe847 100644 --- a/pom.xml +++ b/pom.xml @@ -434,5 +434,18 @@ + + + fast + + true + + true + true + true + true + + + diff --git a/src/test/maxima/special/reference/gamma.mac b/src/test/maxima/special/reference/gamma.mac new file mode 100644 index 000000000..007535e25 --- /dev/null +++ b/src/test/maxima/special/reference/gamma.mac @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This script generates reference ("exact") values for the gamma function. + * The generated values are stored sequentially in a binary file, as follows + * x[0], f(x[0]), x[1], f(x[1]), ... + * where f is the function being sampled. + */ +kill(all); + +fpprec : 64; +f(x) := gamma(x); + +sample(x, name) := block( + y : [], + for i : 1 while i <= length(x) do y : endcons(float(f(x[i])), y), + xy : join(float(x), y), + stream : openw_binary(name), + write_binary_data(xy, stream), + close(stream) + ); + +x : makelist(bfloat(i / 1024), i, -5119, -4097); +sample(x, "gamma-01.dat"); + +x : makelist(bfloat(i / 1024), i, -4095, -3073); +sample(x, "gamma-02.dat"); + +x : makelist(bfloat(i / 1024), i, -3071, -2049); +sample(x, "gamma-03.dat"); + +x : makelist(bfloat(i / 1024), i, -2047, -1025); +sample(x, "gamma-04.dat"); + +x : makelist(bfloat(i / 1024), i, -1023, -1); +sample(x, "gamma-05.dat"); + +x : makelist(bfloat(i / 1024), i, 1, 8192); +sample(x, "gamma-06.dat"); + +x : makelist(bfloat(i / 64), i, 513, 9024); +sample(x, "gamma-07.dat"); + + + + + + diff --git a/src/test/maxima/special/reference/logGamma.mac b/src/test/maxima/special/reference/logGamma.mac new file mode 100644 index 000000000..21eb2a864 --- /dev/null +++ b/src/test/maxima/special/reference/logGamma.mac @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This script generates reference ("exact") values for the logGamma function. + * The generated values are stored sequentially in a binary file, as follows + * x[0], f(x[0]), x[1], f(x[1]), ... + * where f is the function being sampled. + */ + +kill(all); + +fpprec : 64; +f(x) := log(gamma(x)); + +sample(x, name) := block( + y : [], + for i : 1 while i <= length(x) do y : endcons(float(f(x[i])), y), + xy : join(float(x), y), + stream : openw_binary(name), + write_binary_data(xy, stream), + close(stream) + ); + +x : append(makelist(bfloat(i / 1024), i, 1, 8192)); +sample(x, "logGamma-01.dat"); + +x : makelist(bfloat(i / 8), i, 65, 8192); +sample(x, "logGamma-02.dat"); + +x : makelist(bfloat(i), i, 1025, 8192); +sample(x, "logGamma-03.dat"); + +x : makelist(bfloat(2**(i / 8)), i, 105, 8112); +sample(x, "logGamma-04.dat"); \ No newline at end of file