docs: def splini(xa, ya, y2a, n, x, y):
      '''
  /*      INTEGRATE CUBIC SPLINE FUNCTION FROM XA(1) TO X
   *       XA,YA: ARRAYS OF TABULATED FUNCTION IN ASCENDING ORDER BY X
   *       Y2A: ARRAY OF SECOND DERIVATIVES
   *       N: SIZE OF ARRAYS XA,YA,Y2A
   *       X: ABSCISSA ENDPOINT FOR INTEGRATION
   *       Y: OUTPUT VALUE
   */
   '''
      yi = 0
      klo = 0
      khi = 1
      while((x>xa[klo]) and (khi<n)):
          xx = x
          if(khi < (n-1)):
              if (x < xa[khi]):
                  xx = x
              else:
                  xx = xa[khi]
          h = xa[khi] - xa[klo]
          a = (xa[khi] - xx)/h
          b = (xx - xa[klo])/h
          a2 = a*a
          b2 = b*b
          yi += ((1.0 - a2) * ya[klo] / 2.0 + b2 * ya[khi] / 2.0 + ((-(1.0+a2*a2)/4.0 + a2/2.0) * y2a[klo] + (b2*b2/4.0 - b2/2.0) * y2a[khi]) * h * h / 6.0) * h;
          klo += 1;
          khi += 1;
      y[0] = yi
      return