license import { backend_util , Erf , KernelConfig } from '@tensorflow/tfjs-core' ; import { unaryKernelFunc } from '../kernel_utils/kernel_funcs_utils' ; const ERF = `
  // Error function is calculated approximately with elementary function.
  // See "Handbook of Mathematical Functions with Formulas,
  // Graphs, and Mathematical Tables", Abramowitz and Stegun.
  float p = ${ backend_util . ERF_P };
  float a1 = ${ backend_util . ERF_A1 };
  float a2 = ${ backend_util . ERF_A2 };
  float a3 = ${ backend_util . ERF_A3 };
  float a4 = ${ backend_util . ERF_A4 };
  float a5 = ${ backend_util . ERF_A5 };

  float sign = sign(x);
  x = abs(x);
  float t = 1.0 / (1.0 + p * x);
  return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));
` ; export const erf = unaryKernelFunc ( { opSnippet : ERF } ) ; export const erfConfig = { kernelName : Erf , backendName : 'webgl' , kernelFunc : erf , } ;