def test_cubic_spline(): from interpolation.splines.filter_cubic import filter_coeffs from interpolation.splines.eval_cubic import eval_cubic_spline, vec_eval_cubic_spline cc = filter_coeffs(a,b,orders,vals) assert(tuple(cc.shape)==tuple([o+2 for o in orders])) ii = eval_cubic_spline(a, b, orders, cc, point) iii = vec_eval_cubic_spline(a, b, orders, cc, points) assert(isinstance(ii,float)) assert(iii.ndim==1)
def test_cubic_spline(): from interpolation.splines.filter_cubic import filter_coeffs from interpolation.splines.eval_cubic import eval_cubic_spline, vec_eval_cubic_spline cc = filter_coeffs(a, b, orders, vals) assert (tuple(cc.shape) == tuple([o + 2 for o in orders])) ii = eval_cubic_spline(a, b, orders, cc, point) iii = vec_eval_cubic_spline(a, b, orders, cc, points) assert (isinstance(ii, float)) assert (iii.ndim == 1)
from interpolation.splines.misc import mlinspace import numpy K = 50 d = 2 N = 10**6 # N = 100 a = numpy.array([0.0] * d) b = numpy.array([1.0] * d) orders = numpy.array([K] * d, dtype=int) V = numpy.random.random(orders) C = filter_coeffs(a, b, orders, V) X = numpy.random.random((N, d)) res = numpy.zeros(N) res2 = res.copy() if d == 3: vec_eval_cubic_spline = vec_eval_cubic_spline_3 elif d == 2: vec_eval_cubic_spline = vec_eval_cubic_spline_2 vec_eval_cubic_spline(a, b, orders, C, X, res) multilinear_interpolation(a, b, orders, V, X, res) import time
from interpolation.splines.misc import mlinspace import numpy K = 50 d = 3 N = 10**6 # N = 100 a = numpy.array([0.0,0.0,0.0]) b = numpy.array([1.0,1.0,1.0]) orders = numpy.array([K,K,K],dtype=int) V = numpy.random.random(orders) C = filter_coeffs(a,b,orders,V) X = numpy.random.random((N,3)) res = numpy.zeros(N) res2 = res.copy() vec_eval_cubic_spline_3(a,b,orders,C,X,res) multilinear_interpolation(a,b,orders,V,X,res) import time t1 = time.time()
N = 100 # nb of points to evaluate a = array([0.0]*d, dtype=float) b = array([1.0]*d, dtype=float) orders = array([K]*d, dtype=int) grid = mlinspace(a,b,orders) # single valued function to interpolate f = lambda vec: sqrt(vec.sum(axis=1)) # df # single valued function to interpolate vals = f(grid) from interpolation.splines.filter_cubic import filter_coeffs cc = filter_coeffs(a,b,orders,vals) def test_cuda(): mvals = concatenate([vals[:,None],vals[:,None]],axis=1) # many points points = row_stack([[0.5, 0.5]]*N) from numba import cuda from interpolation.splines.eval_cubic_cuda import vec_eval_cubic_spline_2, Ad, dAd jitted = cuda.jit(vec_eval_cubic_spline_2) out = zeros(N)