time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

evalpoly.js (4602B)


      1 /**
      2 * @license Apache-2.0
      3 *
      4 * Copyright (c) 2018 The Stdlib Authors.
      5 *
      6 * Licensed under the Apache License, Version 2.0 (the "License");
      7 * you may not use this file except in compliance with the License.
      8 * You may obtain a copy of the License at
      9 *
     10 *    http://www.apache.org/licenses/LICENSE-2.0
     11 *
     12 * Unless required by applicable law or agreed to in writing, software
     13 * distributed under the License is distributed on an "AS IS" BASIS,
     14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     15 * See the License for the specific language governing permissions and
     16 * limitations under the License.
     17 */
     18 
     19 /*
     20 * This script compiles modules for evaluating polynomial functions. If any polynomial coefficients change, this script should be rerun to update the compiled files.
     21 */
     22 'use strict';
     23 
     24 // MODULES //
     25 
     26 var resolve = require( 'path' ).resolve;
     27 var writeFileSync = require( '@stdlib/fs/write-file' ).sync;
     28 var licenseHeader = require( '@stdlib/_tools/licenses/header' );
     29 var compile = require( './../../../../base/tools/evalpoly-compile' );
     30 
     31 
     32 // VARIABLES //
     33 
     34 // Polynomial coefficients ordered in ascending degree...
     35 var co1 = [
     36 	-1.0,
     37 	-5.0,
     38 	5.0
     39 ];
     40 var co2 = [
     41 	1.0,
     42 	21.0,
     43 	-69.0,
     44 	46.0
     45 ];
     46 var co3 = [
     47 	7.0,
     48 	-2.0,
     49 	33.0,
     50 	-62.0,
     51 	31.0
     52 ];
     53 var co4 = [
     54 	25.0,
     55 	-52.0,
     56 	-17.0,
     57 	88.0,
     58 	-115.0,
     59 	46.0
     60 ];
     61 var co5 = [
     62 	7.0,
     63 	12.0,
     64 	-78.0,
     65 	52.0
     66 ];
     67 var co6 = [
     68 	-7.0,
     69 	2.0,
     70 	183.0,
     71 	-370.0,
     72 	185.0
     73 ];
     74 var co7 = [
     75 	-533.0,
     76 	776.0,
     77 	-1835.0,
     78 	10240.0,
     79 	-13525.0,
     80 	5410.0
     81 ];
     82 var co8 = [
     83 	-1579.0,
     84 	3747.0,
     85 	-3372.0,
     86 	-15821.0,
     87 	45588.0,
     88 	-45213.0,
     89 	15071.0
     90 ];
     91 var co9 = [
     92 	449.0,
     93 	-1259.0,
     94 	-769.0,
     95 	6686.0,
     96 	-9260.0,
     97 	3704.0
     98 ];
     99 var co10 = [
    100 	63149.0,
    101 	-151557.0,
    102 	140052.0,
    103 	-727469.0,
    104 	2239932.0,
    105 	-2251437.0,
    106 	750479.0
    107 ];
    108 var co11 = [
    109 	29233.0,
    110 	-78755.0,
    111 	105222.0,
    112 	146879.0,
    113 	-1602610.0,
    114 	3195183.0,
    115 	-2554139.0,
    116 	729754.0
    117 ];
    118 var co12 = [
    119 	1.0,
    120 	-13.0,
    121 	13.0
    122 ];
    123 var co13 = [
    124 	1.0,
    125 	21.0,
    126 	-69.0,
    127 	46.0
    128 ];
    129 var co14 = [
    130 	0.16666666666666666667,
    131 	0.16666666666666666667
    132 ];
    133 var co15 = [
    134 	0.058333333333333333333,
    135 	0.066666666666666666667,
    136 	0.0083333333333333333333
    137 ];
    138 var co16 = [
    139 	0.025198412698412698413,
    140 	0.026785714285714285714,
    141 	0.0017857142857142857143,
    142 	0.00019841269841269841270
    143 ];
    144 var co17 = [
    145 	0.012039792768959435626,
    146 	0.010559964726631393298,
    147 	-0.0011078042328042328042,
    148 	0.00037477954144620811287,
    149 	2.7557319223985890653e-6
    150 ];
    151 var co18 = [
    152 	0.0038370059724226390893,
    153 	0.0061039211560044893378,
    154 	-0.0016095979637646304313,
    155 	0.00059458674042007375341,
    156 	-0.000062705427288760622094,
    157 	2.5052108385441718775e-8
    158 ];
    159 var co19 = [
    160 	0.0032177478835464946576,
    161 	0.0010898206731540064873,
    162 	-0.0012579159844784844785,
    163 	0.00069084207973096861986,
    164 	-0.00016376804137220803887,
    165 	0.000015401265401265401265,
    166 	1.6059043836821614599e-10
    167 ];
    168 var co20 = [
    169 	0.0017438262298340009980,
    170 	0.000033530976880017885309,
    171 	-0.00076245135440323932387,
    172 	0.00064513046951456342991,
    173 	-0.00024947258047043099953,
    174 	0.000049255746366361445727,
    175 	-3.9851014346715404916e-6,
    176 	7.6471637318198164759e-13
    177 ];
    178 var co21 = [
    179 	0.00096472747321388644237,
    180 	-0.00031101086326318780412,
    181 	-0.00036307660358786885787,
    182 	0.00051406605788341121363,
    183 	-0.00029133414466938067350,
    184 	0.000090867107935219902229,
    185 	-0.000015303004486655377567,
    186 	1.0914179173496789432e-6,
    187 	2.8114572543455207632e-15
    188 ];
    189 var co22 = [
    190 	0.00054229262813129686486,
    191 	-0.00036942667800009661203,
    192 	-0.00010230378073700412687,
    193 	0.00035764655430568632777,
    194 	-0.00028690924218514613987,
    195 	0.00012645437628698076975,
    196 	-0.000033202652391372058698,
    197 	4.8903045291975346210e-6,
    198 	-3.1239569599829868045e-7,
    199 	8.2206352466243297170e-18
    200 ];
    201 
    202 // Header to add to output files:
    203 var header = licenseHeader( 'Apache-2.0', 'js', {
    204 	'year': ( new Date() ).getFullYear(),
    205 	'copyright': 'The Stdlib Authors'
    206 });
    207 header += '\n/* This is a generated file. Do not edit directly. */\n';
    208 
    209 
    210 // MAIN //
    211 
    212 /**
    213 * Main execution sequence.
    214 *
    215 * @private
    216 */
    217 function main() {
    218 	var fpath;
    219 	var coefs;
    220 	var opts;
    221 	var str;
    222 	var i;
    223 
    224 	opts = {
    225 		'encoding': 'utf8'
    226 	};
    227 
    228 	coefs = [
    229 		[ co1, 'co1' ],
    230 		[ co2, 'co2' ],
    231 		[ co3, 'co3' ],
    232 		[ co4, 'co4' ],
    233 		[ co5, 'co5' ],
    234 		[ co6, 'co6' ],
    235 		[ co7, 'co7' ],
    236 		[ co8, 'co8' ],
    237 		[ co9, 'co9' ],
    238 		[ co10, 'co10' ],
    239 		[ co11, 'co11' ],
    240 		[ co12, 'co12' ],
    241 		[ co13, 'co13' ],
    242 		[ co14, 'co14' ],
    243 		[ co15, 'co15' ],
    244 		[ co16, 'co16' ],
    245 		[ co17, 'co17' ],
    246 		[ co18, 'co18' ],
    247 		[ co19, 'co19' ],
    248 		[ co20, 'co20' ],
    249 		[ co21, 'co21' ],
    250 		[ co22, 'co22' ]
    251 	];
    252 	for ( i = 0; i < coefs.length; i++ ) {
    253 		fpath = resolve( __dirname, '..', 'lib', 'polyval_'+coefs[i][1]+'.js' );
    254 		str = header + compile( coefs[i][0] );
    255 		writeFileSync( fpath, str, opts );
    256 	}
    257 }
    258 
    259 main();