@stdlib/math-base-tools-evalrational-compile-c
Version:
Compile a C function for evaluating a rational function.
6 lines (5 loc) • 2.44 kB
JavaScript
;var E=function(i,r){return function(){return r||i((r={exports:{}}).exports,r),r.exports}};var l=E(function(L,g){
var s=require("path").join,p=require('@stdlib/fs-read-file/dist').sync,f=require('@stdlib/string-replace/dist'),u=require('@stdlib/assert-is-integer/dist').isPrimitive,x=require('@stdlib/string-base-uppercase/dist'),N=require('@stdlib/constants-float64-pinf/dist'),A=require('@stdlib/constants-float64-ninf/dist'),d={encoding:"utf8"},o=s(__dirname,"templates"),I=p(s(o,"coefficient_ratio.c.txt"),d),S=p(s(o,"evalrational.c.txt"),d),T=p(s(o,"loop.c.txt"),d),y=p(s(o,"nan.c.txt"),d);function v(i){var r;return i===N?"1.0{{dtype_suffix}} / 0.0{{dtype_suffix}}":i===A?"-1.0{{dtype_suffix}} / 0.0{{dtype_suffix}}":(r=i.toString(),u(i)&&(r+=".0"),r+="{{dtype_suffix}}",r)}function _(i){var r,n,t,e;for(n=i.length,t=n-1,r="",e=0;e<n;e++)r+=" "+i[e].toString(),u(i[e])&&(r+=".0"),r+="{{dtype_suffix}}",e<t&&(r+=",\n");return r}function m(i){var r,n,t,e;for(n=i.length,t=n-1,r=i[0].toString(),u(i[0])&&(r+=".0"),r+="{{dtype_suffix}}",e=1;e<n;e++)r+=" + (x * ",e<t&&(r+="("),r+=i[e].toString(),u(i[e])&&(r+=".0"),r+="{{dtype_suffix}}";for(e=0;e<2*t-1;e++)r+=")";return r}function c(i){var r,n,t;for(n=i.length-1,r=i[n].toString(),u(i[n])&&(r+=".0"),r+="{{dtype_suffix}}",t=n-1;t>=0;t--)r+=" + (ix * ",t>0&&(r+="("),r+=i[t].toString(),u(i[t])&&(r+=".0"),r+="{{dtype_suffix}}";for(t=0;t<2*n-1;t++)r+=")";return r}function h(i,r,n){var t,e,a;return t={dtype:"double",name:"evalrational",suffix:""},arguments.length>2&&(t.dtype=n.dtype||t.dtype,t.name=n.name||t.name),t.dtype==="float"&&(t.suffix="f"),a=i.length,a===0||a!==r.length?(e=f(y,"{{dtype}}",t.dtype),e=f(e,"{{dtype_suffix}}",t.suffix),f(e,"{{fname}}",t.name)):a===1?(e=f(I,"{{ratio}}",v(i[0]/r[0])),e=f(e,"{{dtype}}",t.dtype),e=f(e,"{{dtype_suffix}}",t.suffix),f(e,"{{fname}}",t.name)):a>500?(e=f(T,"{{P}}",_(i)),e=f(e,"{{Q}}",_(r)),e=f(e,"{{ratio}}",v(i[0]/r[0])),e=f(e,"{{num_coefficients}}",a.toString()),e=f(e,"{{dtype}}",t.dtype),e=f(e,"{{dtype_suffix}}",t.suffix),e=f(e,"{{fname}}",t.name),f(e,"{{FNAME}}",x(t.name))):(e=f(S,"{{P_ASCENDING}}",m(i)),e=f(e,"{{Q_ASCENDING}}",m(r)),e=f(e,"{{P_DESCENDING}}",c(i)),e=f(e,"{{Q_DESCENDING}}",c(r)),e=f(e,"{{ratio}}",v(i[0]/r[0])),e=f(e,"{{dtype}}",t.dtype),e=f(e,"{{dtype_suffix}}",t.suffix),f(e,"{{fname}}",t.name))}g.exports=h
});var q=l();module.exports=q;
/** @license Apache-2.0 */
//# sourceMappingURL=index.js.map