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();