diff options
Diffstat (limited to 'src/GeneralizedPolynomial-Uniform/2d.log')
-rw-r--r-- | src/GeneralizedPolynomial-Uniform/2d.log | 4379 |
1 files changed, 0 insertions, 4379 deletions
diff --git a/src/GeneralizedPolynomial-Uniform/2d.log b/src/GeneralizedPolynomial-Uniform/2d.log deleted file mode 100644 index 27d6bc6..0000000 --- a/src/GeneralizedPolynomial-Uniform/2d.log +++ /dev/null @@ -1,4379 +0,0 @@ - |\^/| Maple 7 (IBM INTEL LINUX) -._|\| |/|_. Copyright (c) 2001 by Waterloo Maple Inc. - \ MAPLE / All rights reserved. Maple is a registered trademark of - <____ ____> Waterloo Maple Inc. - | Type ? for help. -# util.maple -- misc utility routines -# $Id: util.maple,v 1.2 2002/05/14 14:01:06 jthorn Exp $ -> -# -# C_str - codegen[C](), but returning its result as a Maple string -# fix_rationals - convert numbers to RATIONAL() calls -# nonmatching_names - find names in a list which *don't* have a specified prefix -# sprint_numeric_list - convert a numeric list to a valid C identifier suffix -# print_name_list_dcl - print a C declaration for a list of names -# -# hypercube_points - compute all (integer) points in an N-dimensional hypercube -# -# ftruncate - truncate a file to zero length -# -> -################################################################################ -################################################################################ -################################################################################ -> -# -# This function is a wrapper around codegen[C]() which returns the -# genenerated code explictly as a Maple string. -# -# Arguments: -# expr = (in) The expression for which code is to be generated. -# ... = (in) Any further arguments are taken as options to be passed -# to codegen[C]() -# -# Results: -# The function returns a maple string of C code. -# -> C_str := -> proc(expr::algebraic) -> local tempname, str, temp; -> -# name of temp file -# FIXME: should use process number to ensure uniqueness -> tempname := "/tmp/C_str.tmp.c"; -> -# truncate temp file to zero length -> fopen(tempname, WRITE); -> fclose(tempname); -> -# generate the code -> codegen[C](args, filename=tempname); -> -# read the code back in -> str := ""; -> while true -> do -> temp := readline(tempname); -> if (temp = 0) -> then break; -> end if; -> str := cat(str, temp); -> end do; -> fclose(tempname); -> -# strip off the leading " t0 = " -> return op(2,sscanf(str, "%s = %[^;];")); -> end proc; -C_str := proc(expr::algebraic) -local tempname, str, temp; - tempname := "/tmp/C_str.tmp.c"; - fopen(tempname, WRITE); - fclose(tempname); - codegen[C](args, filename = tempname); - str := ""; - do - temp := readline(tempname); - if temp = 0 then break end if; - str := cat(str, temp) - end do; - fclose(tempname); - return op(2, sscanf(str, "%s = %[^;];")) -end proc - -> -################################################################################ -> -# -# This function converts all {integer, rational} subexpressions of its -# input except integer exponents and -1 factors in products, into function -# calls -# RATIONAL(num,den) -# This is useful in conjunction with the C() library function, since -# -# C( (1/3) * foo * bar ) -# t0 = foo*bar/3; -# -# generates a (slow) division (and runs the risk of mixed-mode-arithmetic -# problems), while -# -# C((1.0/3.0) * foo * bar); -# t0 = 0.3333333333*foo*bar; -# -# suffers from roundoff error. With this function, -# -# fix_rationals((1/3) * foo * bar); -# RATIONAL(1,3) foo bar -# C(%); -# t0 = RATIONAL(1.0,3.0)*foo*bar; -# -# which a C preprocessor macro can easily convert to the desired -# -# t0 = (1.0/3.0)*foo*bar; -# -# Additionally, this function can be told to leave certain types of -# subexpressions unconverged. For example, -# fix_rationals(expr, type, specfunc(integer, DATA)); -# will leave all subexpressions of the form DATA(integer arguments) -# unconverted. -# -# Arguments: -# expr = (in) The expression to be converted. -# inert_fn = (optional in) -# If specified, this argument should be a Boolean procedure -# or the name of a Boolean procedure. This procedure should -# take one or more argument, and return true if and only if -# the first argument should *not* be converted, i.e. if we -# should leave this expression unchanged. See the last -# example above. -# ... = (optional in) -# Any further arguments are passed as additional arguments to -# the inert_fn procedure. -# -> fix_rationals := -> proc( -> expr::{ -> algebraic, name = algebraic, -> list({algebraic, name = algebraic}), -> set ({algebraic, name = algebraic}) -> }, -> inert_fn::{name, procedure} -> ) -> local nn, k, -> base, power, fbase, fpower, -> fn, fn_args_list, -> num, den, mult; -> -# do we want to convert this expression? -> if ((nargs >= 2) and inert_fn(expr, args[3..nargs])) -> then return expr; -> end if; -> -# recurse over lists and sets -> if (type(expr, {list,set})) -> then return map(fix_rationals, expr, args[2..nargs]); -> end if; -> -# recurse over equation right hand sides -> if (type(expr, name = algebraic)) -> then return ( lhs(expr) = fix_rationals(rhs(expr), args[2..nargs]) ); -> end if; -> -# recurse over functions other than RATIONAL() -> if (type(expr, function)) -> then -> fn := op(0, expr); -> if (fn <> 'RATIONAL') -> then -> fn_args_list := [op(expr)]; -> fn_args_list := map(fix_rationals, fn_args_list, args[2..nargs]); -> fn; return '%'( op(fn_args_list) ); -> end if; -> end if; -> -> nn := nops(expr); -> -# recurse over sums -> if (type(expr, `+`)) -> then return sum('fix_rationals(op(k,expr), args[2..nargs])', 'k'=1..nn); -> end if; -> -# recurse over products -# ... leaving leading -1 factors intact, i.e. not converted to RATIONAL(-1,1) -> if (type(expr, `*`)) -> then -> if (op(1, expr) = -1) -> then return -1*fix_rationals(remove(type, expr, 'identical(-1)'), -> args[2..nargs]); -> else return product('fix_rationals(op(k,expr), args[2..nargs])', -> 'k'=1..nn); -> end if; -> end if; -> -# recurse over powers -# ... leaving integer exponents intact -> if (type(expr, `^`)) -> then -> base := op(1, expr); -> power := op(2, expr); -> -> fbase := fix_rationals(base, args[2..nargs]); -> if (type(power, integer)) -> then fpower := power; -> else fpower := fix_rationals(power, args[2..nargs]); -> end if; -> return fbase ^ fpower; -> end if; -> -# fix integers and fractions -> if (type(expr, integer)) -> then return 'RATIONAL'(expr, 1); -> end if; -> if (type(expr, fraction)) -> then -> num := op(1, expr); -> den := op(2, expr); -> -> return 'RATIONAL'(num, den); -> end if; -> -# turn Maple floating-point into integer fraction, then recursively fix that -> if (type(expr, float)) -> then -> mult := op(1, expr); -> power := op(2, expr); -> return fix_rationals(mult * 10^power, args[2..nargs]); -> end if; -> -# identity op on names -> if (type(expr, name)) -> then return expr; -> end if; -> -# unknown type -> error "%0", -> "unknown type for expr!", -> " whattype(expr) = ", whattype(expr), -> " expr = ", expr; -> end proc; -fix_rationals := proc(expr::{algebraic, name = algebraic, -list({algebraic, name = algebraic}), set({algebraic, name = algebraic})}, -inert_fn::{procedure, name}) -local nn, k, base, power, fbase, fpower, fn, fn_args_list, num, den, mult; - if 2 <= nargs and inert_fn(expr, args[3 .. nargs]) then return expr - end if; - if type(expr, {set, list}) then - return map(fix_rationals, expr, args[2 .. nargs]) - end if; - if type(expr, name = algebraic) then - return lhs(expr) = fix_rationals(rhs(expr), args[2 .. nargs]) - end if; - if type(expr, function) then - fn := op(0, expr); - if fn <> 'RATIONAL' then - fn_args_list := [op(expr)]; - fn_args_list := - map(fix_rationals, fn_args_list, args[2 .. nargs]); - fn; - return '%'(op(fn_args_list)) - end if - end if; - nn := nops(expr); - if type(expr, `+`) then return - sum('fix_rationals(op(k, expr), args[2 .. nargs])', 'k' = 1 .. nn) - end if; - if type(expr, `*`) then - if op(1, expr) = -1 then return -fix_rationals( - remove(type, expr, 'identical(-1)'), args[2 .. nargs]) - else return product('fix_rationals(op(k, expr), args[2 .. nargs])', - 'k' = 1 .. nn) - end if - end if; - if type(expr, `^`) then - base := op(1, expr); - power := op(2, expr); - fbase := fix_rationals(base, args[2 .. nargs]); - if type(power, integer) then fpower := power - else fpower := fix_rationals(power, args[2 .. nargs]) - end if; - return fbase^fpower - end if; - if type(expr, integer) then return 'RATIONAL'(expr, 1) end if; - if type(expr, fraction) then - num := op(1, expr); den := op(2, expr); return 'RATIONAL'(num, den) - end if; - if type(expr, float) then - mult := op(1, expr); - power := op(2, expr); - return fix_rationals(mult*10^power, args[2 .. nargs]) - end if; - if type(expr, name) then return expr end if; - error "%0", "unknown type for expr!", " whattype(expr) = ", - whattype(expr), " expr = ", expr -end proc - -> -################################################################################ -> -# -# This function finds names in a list which *don't* have a specified prefix. -# -# Arguments: -# name_list = A list of the names. -# prefix = The prefix we want to filter out. -# -# Results: -# This function returns the subset list of names which don't have the -# specified prefix. -# -> nonmatching_names := -> proc( name_list::list({name,string}), prefix::{name,string} ) -> -> select( proc(n) -> evalb(not StringTools[IsPrefix](prefix,n)); -> end proc -> , -> name_list -> ); -> end proc; -nonmatching_names := proc( -name_list::list({name, string}), prefix::{name, string}) - select(proc(n) evalb(not StringTools[IsPrefix](prefix, n)) end proc, - name_list) -end proc - -> -################################################################################ -> -# -# This function converts a numeric list to a string which is a valid -# C identifier suffix: elements are separated by "_", decimal points are -# replaced by "x", and all nonzero values have explicit +/- signs, which -# are replaced by "p"/"m". -# -# For example, [0,-3.5,+4] --> "0_m3x5_p4". -# -> sprint_numeric_list := -> proc(nlist::list(numeric)) -> -# generate preliminary string, eg "+0_-3.5_+4" -> map2(sprintf, "%+a", nlist); -> ListTools[Join](%, "_"); -> cat(op(%)); -> -# fixup bad characters -> StringTools[SubstituteAll](%, "+0", "0"); -> StringTools[CharacterMap](".+-", "xpm", %); -> -> return %; -> end proc; -sprint_numeric_list := proc(nlist::list(numeric)) - map2(sprintf, "%+a", nlist); - ListTools[Join](%, "_"); - cat(op(%)); - StringTools[SubstituteAll](%, "+0", "0"); - StringTools[CharacterMap](".+-", "xpm", %); - return % -end proc - -> -################################################################################ -> -# -# This function prints a C declaration for a list of names. -# -# Argument: -# name_list = A list of the names. -# name_type = The C type of the names, eg. "double". -# file_name = The file name to write the declaration to. This is -# truncated before writing. -# -> print_name_list_dcl := -> proc( name_list::list({name,string}), -> name_type::string, -> file_name::string ) -> local blanks, separator_string; -> -> ftruncate(file_name); -> -# a sequence of blanks with the same length as name_type -> seq(" ", i=1..length(name_type)); -> -# string to separate names -> separator_string := cat(",\n", %, " "); -> -> map(convert, name_list, string); -> ListTools[Join](%, separator_string); -> cat(op(%)); -> -> fprintf(file_name, -> "%s %s;\n", -> name_type, %); -> -> fclose(file_name); -> NULL; -> end proc; -print_name_list_dcl := proc( -name_list::list({name, string}), name_type::string, file_name::string) -local blanks, separator_string; - ftruncate(file_name); - seq(" ", i = 1 .. length(name_type)); - separator_string := cat(",\n", %, " "); - map(convert, name_list, string); - ListTools[Join](%, separator_string); - cat(op(%)); - fprintf(file_name, "%s %s;\n", name_type, %); - fclose(file_name); - NULL -end proc - -> -################################################################################ -################################################################################ -################################################################################ -> -# -# This function computes a list of all the (integer) points in an -# N-dimensional hypercube, in lexicographic order. The present -# implementation requires N <= 4. -# -# Arguments: -# cmin,cmax = N-element lists of cube minimum/maximum coordinates. -# -# Results: -# The function returns a set of d-element lists giving the coordinates. -# For example, -# hypercube([0,0], [2,1] -# returns -# { [0,0], [0,1], [1,0], [1,1], [2,0], [2,1] } -> hypercube_points := -> proc(cmin::list(integer), cmax::list(integer)) -> local N, i,j,k,l; -> -> N := nops(cmin); -> if (nops(cmax) <> N) -> then error -> "must have same number of dimensions for min and max coordinates!"; -> fi; -> -> if (N = 1) -> then return [seq([i], i=cmin[1]..cmax[1])]; -> elif (N = 2) -> then return [ -> seq( -> seq([i,j], j=cmin[2]..cmax[2]), -> i=cmin[1]..cmax[1]) -> ]; -> elif (N = 3) -> then return [ -> seq( -> seq( -> seq([i,j,k], k=cmin[3]..cmax[3]), -> j=cmin[2]..cmax[2] ), -> i=cmin[1]..cmax[1]) -> ]; -> elif (N = 4) -> then return [ -> seq( -> seq( -> seq( -> seq([i,j,k,l], l=cmin[4]..cmax[4]), -> k=cmin[3]..cmax[3] ), -> j=cmin[2]..cmax[2]), -> i=cmin[1]..cmax[1]) -> ]; -> else -> error "implementation restriction: must have N <= 4, got %1!", N; -> fi; -> end proc; -hypercube_points := proc(cmin::list(integer), cmax::list(integer)) -local N, i, j, k, l; - N := nops(cmin); - if nops(cmax) <> N then error - "must have same number of dimensions for min and max coordinates!" - end if; - if N = 1 then return [seq([i], i = cmin[1] .. cmax[1])] - elif N = 2 then return - [seq(seq([i, j], j = cmin[2] .. cmax[2]), i = cmin[1] .. cmax[1])] - elif N = 3 then return [seq( - seq(seq([i, j, k], k = cmin[3] .. cmax[3]), j = cmin[2] .. cmax[2]) - , i = cmin[1] .. cmax[1])] - elif N = 4 then return [seq(seq(seq( - seq([i, j, k, l], l = cmin[4] .. cmax[4]), k = cmin[3] .. cmax[3]), - j = cmin[2] .. cmax[2]), i = cmin[1] .. cmax[1])] - else error "implementation restriction: must have N <= 4, got %1!", N - end if -end proc - -> -################################################################################ -################################################################################ -################################################################################ -> -# -# This function truncates a file to 0 length if it exists, or creates -# it at that length if it doesn't exist. -# -# Arguments: -# file_name = (in) The name of the file. -# -> ftruncate := -> proc(file_name::string) -> fopen(file_name, 'WRITE'); -> fclose(%); -> NULL; -> end proc; -ftruncate := - - proc(file_name::string) fopen(file_name, 'WRITE'); fclose(%); NULL end proc - -# interpolate.maple -- compute generalized interpolation formulas/coefficients -# $Id: interpolate.maple,v 1.4 2002/05/14 15:52:50 jthorn Exp $ -> -# -# <<<representation of numbers, data values, etc>>> -# polynomial_interpolant - compute polynomial interpolant -# coeff_as_lc_of_data - coefficients of ... (linear combination of data) -# -# print_coeff__lc_of_data - print C code to compute coefficients -# print_data_var_assign - print C code to assign data-value variables -# print_interp_coeff_var_store - print C code to store coeff vars "somewhere" -# print_interp_cmpt__lc_of_data - print C code for computation of interpolant -# -# coeff_name - name of coefficient of data at a given [m] coordinate -# data_var_name - name of variable storing data value at a given [m] coordinate -# -> -################################################################################ -> -# -# ***** representation of numbers, data values, etc ***** -# -# We use RATIONAL(p.0,q.0) to denote the rational number p/q. -# -# We use DATA(...) to represent the data values being interpolated at a -# specified [m] coordinate, where the arguments are the [m] coordinates. -# -# We use COEFF(...) to represent the molecule coefficient at a specified -# [m] coordinate, where the arguments are the [m] coordinates. -# -# For example, the usual 1-D centered 2nd order 1st derivative molecule -# would be written -# RATIONAL(-1.0,2.0)*DATA(-1) + RATIONA(1.0,2.0)*DATA(1) -# and its coefficients as -# COEFF(-1) = RATIONAL(-1.0,2.0) -# COEFF(1) = RATIONAL(1.0,2.0) -# -> -################################################################################ -################################################################################ -################################################################################ -> -# -# This function computes a polynomial interpolant in any number of dimensions. -# -# Arguments: -# fn = The interpolation function. This should be a procedure in the -# coordinates, having the coefficients as global variables. For -# example, -# proc(x,y) c00 + c10*x + c01*y end proc -# coeff_list = A set of the interpolation coefficients (coefficients in -# the interpolation function), for example [c00, c10, c01]. -# coord_list = A list of the coordinates (independent variables in the -# interpolation function), for example [x,y]. -# posn_list = A list of positions (each a list of numeric values) where the -# interpolant is to use data, for example hypercube([0,0], [1,1]). -# Any positions may be used; if they're redundant (as in the -# example) the least-squares interpolant is computed. -# -# Results: -# This function returns the interpolating polynomial, in the form of -# an algebraic expression in the coordinates and the data values. -# -> polynomial_interpolant := -> proc( -> fn::procedure, coeff_list::list(name), -> coord_list::list(name), posn_list::list(list(numeric)) -> ) -> local posn, data_eqns, coeff_eqns; -> -# coefficients of interpolating polynomial -> data_eqns := { seq( fn(op(posn))='DATA'(op(posn)) , posn=posn_list ) }; -> coeff_eqns := linalg[leastsqrs](data_eqns, {op(coeff_list)}); -> if (has(coeff_eqns, '_t')) -> then error "interpolation coefficients aren't uniquely determined!"; -> end if; -> -# interpolant as a polynomial in the coordinates -> return subs(coeff_eqns, eval(fn))(op(coord_list)); -> end proc; -polynomial_interpolant := proc(fn::procedure, coeff_list::list(name), -coord_list::list(name), posn_list::list(list(numeric))) -local posn, data_eqns, coeff_eqns; - data_eqns := {seq(fn(op(posn)) = 'DATA'(op(posn)), posn = posn_list)}; - coeff_eqns := linalg[leastsqrs](data_eqns, {op(coeff_list)}); - if has(coeff_eqns, '_t') then - error "interpolation coefficients aren't uniquely determined!" - end if; - return subs(coeff_eqns, eval(fn))(op(coord_list)) -end proc - -> -################################################################################ -> -# -# This function takes as input an interpolating polynomial, expresses -# it as a linear combination of the data values, and returns the coefficeints -# of that form. -# -# Arguments: -# interpolant = The interpolating polynomial (an algebraic expression -# in the coordinates and the data values). -# posn_list = The same list of positions as was used to compute the -# interpolating polynomial. -# -# Results: -# This function returns the coefficients, as a list of equations of the -# form COEFF(...) = value , where each value is a polynomial in the -# coordinates. The order of the list matches that of posn_list. -# -> coeff_as_lc_of_data := -> proc( -> interpolant::algebraic, -> posn_list::list(list(numeric)) -> ) -> local data_list, interpolant_as_lc_of_data; -> -# interpolant as a linear combination of the data values -> data_list := [ seq( 'DATA'(op(posn)) , posn=posn_list ) ]; -> interpolant_as_lc_of_data := collect(interpolant, data_list); -> -# coefficients of the data values in the linear combination -> return map( -> proc(posn::list(numeric)) -> coeff(interpolant_as_lc_of_data, DATA(op(posn))); -> 'COEFF'(op(posn)) = %; -> end proc -> , -> posn_list -> ); -> end proc; -coeff_as_lc_of_data := proc( -interpolant::algebraic, posn_list::list(list(numeric))) -local data_list, interpolant_as_lc_of_data; - data_list := [seq('DATA'(op(posn)), posn = posn_list)]; - interpolant_as_lc_of_data := collect(interpolant, data_list); - return map(proc(posn::list(numeric)) - coeff(interpolant_as_lc_of_data, DATA(op(posn))); - 'COEFF'(op(posn)) = % - end proc, posn_list) -end proc - -> -################################################################################ -################################################################################ -################################################################################ -> -# -# This function prints C expressions for the coefficients of an -# interpolating polynomial. (The polynomial is expressed as linear -# combinations of the data values with coefficients which are -# RATIONAL(p,q) calls.) -# -# Arguments: -# coeff_list = A list of the coefficients, as returned from -# coeff_as_lc_of_data() . -# coeff_name_prefix = A prefix string for the coefficient names. -# temp_name_type = The C type to be used for Maple-introduced temporary -# names, eg. "double". -# file_name = The file name to write the coefficients to. This is -# truncated before writing. -# -> print_coeff__lc_of_data := -> proc( coeff_list::list(specfunc(numeric,COEFF) = algebraic), -> coeff_name_prefix::string, -> temp_name_type::string, -> file_name::string ) -> global `codegen/C/function/informed`; -> local coeff_list2, cmpt_list, temp_name_list; -> -# convert LHS of each equation from a COEFF() call (eg COEFF(-1,+1)) -# to a Maple/C variable name (eg coeff_I_m1_p1) -> coeff_list2 := map( -> proc(coeff_eqn::specfunc(numeric,COEFF) = algebraic) -> local posn; -> posn := [op(lhs(coeff_eqn))]; -> coeff_name(posn,coeff_name_prefix); -> convert(%, name); # codegen[C] wants LHS -> # to be an actual Maple *name* -> % = fix_rationals(rhs(coeff_eqn)); -> end proc -> , -> coeff_list -> ); -> -# -# generate the C code -# -> -# tell codegen[C] not to warn about unknown RATIONAL() and DATA() "fn calls" -# via undocumented :( global table -> `codegen/C/function/informed`['RATIONAL'] := true; -> `codegen/C/function/informed`['DATA'] := true; -> -> ftruncate(file_name); -> -# optimized computation sequence for all the coefficients -# (may use local variables t0,t1,t2,...) -> cmpt_list := [codegen[optimize](coeff_list2, tryhard)]; -> -# list of the t0,t1,t2,... local variables -> temp_name_list := nonmatching_names(map(lhs,cmpt_list), coeff_name_prefix); -> -# declare the t0,t1,t2,... local variables (if there are any) -> if (nops(temp_name_list) > 0) -> then print_name_list_dcl(%, temp_name_type, file_name); -> fi; -> -# now print the optimized computation sequence -> codegen[C](cmpt_list, filename=file_name); -> -> fclose(file_name); -> -> NULL; -> end proc; -print_coeff__lc_of_data := proc( -coeff_list::list(specfunc(numeric, COEFF) = algebraic), -coeff_name_prefix::string, temp_name_type::string, file_name::string) -local coeff_list2, cmpt_list, temp_name_list; -global `codegen/C/function/informed`; - coeff_list2 := map(proc( - coeff_eqn::(specfunc(numeric, COEFF) = algebraic)) - local posn; - posn := [op(lhs(coeff_eqn))]; - coeff_name(posn, coeff_name_prefix); - convert(%, name); - % = fix_rationals(rhs(coeff_eqn)) - end proc, coeff_list); - `codegen/C/function/informed`['RATIONAL'] := true; - `codegen/C/function/informed`['DATA'] := true; - ftruncate(file_name); - cmpt_list := [codegen[optimize](coeff_list2, tryhard)]; - temp_name_list := - nonmatching_names(map(lhs, cmpt_list), coeff_name_prefix); - if 0 < nops(temp_name_list) then - print_name_list_dcl(%, temp_name_type, file_name) - end if; - codegen[C](cmpt_list, filename = file_name); - fclose(file_name); - NULL -end proc - -> -################################################################################ -> -# -# This function prints a sequence of C expression to assign the data-value -# variables, eg -# data_m1_p1 = DATA(-1,1); -# -# Arguments: -# posn_list = The same list of positions as was used to compute the -# interpolating polynomial. -# data_var_name_prefix = A prefix string for the data variable names. -# file_name = The file name to write the coefficients to. This is -# truncated before writing. -# -> print_data_var_assign := -> proc( -> posn_list::list(list(numeric)), -> data_var_name_prefix::string, -> file_name::string -> ) -> -> ftruncate(file_name); -> map( -> proc(posn::list(numeric)) -> fprintf(file_name, -> "%s = %a;\n", -> data_var_name(posn,data_var_name_prefix), -> DATA(op(posn))); -> end proc -> , -> posn_list -> ); -> fclose(file_name); -> -> NULL; -> end proc; -print_data_var_assign := proc(posn_list::list(list(numeric)), -data_var_name_prefix::string, file_name::string) - ftruncate(file_name); - map(proc(posn::list(numeric)) - fprintf(file_name, "%s = %a;\n", - data_var_name(posn, data_var_name_prefix), DATA(op(posn))) - end proc, posn_list); - fclose(file_name); - NULL -end proc - -> -################################################################################ -> -# -# This function prints a sequence of C expression to store the interpolation -# coefficients in COEFF(...) expressions, eg -# COEFF(1,-1) = factor * coeff_dx_p1_m1; -# -# Arguments: -# posn_list = The same list of positions as was used to compute the -# interpolating polynomial. -# RHS_factor_name = If this string is non-empty, then the coefficient is -# multiplied by this factor before being stored, eg -# setting this to "factor" would give the example above. -# If this string is empty (""), the multiplication is -# omitted, eg -# COEFF(1,-1) = coeff_dx_p1_m1; -# coeff_name_prefix = A prefix string for the coefficient names. -# file_name = The file name to write the coefficients to. This is -# truncated before writing. -# -> print_interp_coeff_var_store := -> proc( -> posn_list::list(list(numeric)), -> RHS_factor_name::string, -> coeff_name_prefix::string, -> file_name::string -> ) -> -> ftruncate(file_name); -> map( -> proc(posn::list(numeric)) -> if (length(RHS_factor_name) > 0) -> then fprintf(file_name, -> "%a = %s * %s;\n", -> 'COEFF'(op(posn)), -> RHS_factor_name, -> coeff_name(posn,coeff_name_prefix)); -> else fprintf(file_name, -> "%a = %s;\n", -> 'COEFF'(op(posn)), -> coeff_name(posn,coeff_name_prefix)); -> end if; -> end proc -> , -> posn_list -> ); -> fclose(file_name); -> -> NULL; -> end proc; -print_interp_coeff_var_store := proc(posn_list::list(list(numeric)), -RHS_factor_name::string, coeff_name_prefix::string, file_name::string) - ftruncate(file_name); - map(proc(posn::list(numeric)) - if 0 < length(RHS_factor_name) then fprintf(file_name, - "%a = %s * %s;\n", 'COEFF'(op(posn)), RHS_factor_name, - coeff_name(posn, coeff_name_prefix)) - else fprintf(file_name, "%a = %s;\n", 'COEFF'(op(posn)), - coeff_name(posn, coeff_name_prefix)) - end if - end proc, posn_list); - fclose(file_name); - NULL -end proc - -> -################################################################################ -> -# -# This function prints a C expression to compute the interpolant, -# using the coefficients computed by print_coeff__lc_of_data() -# (i.e. expressing the interpolant as a linear combination of the -# data values). -# -# Arguments: -# posn_list = The same list of positions as was used to compute the -# interpolating polynomial. -# result_var_name = The (string) name of the variable to which the -# result is to be assigned. -# coeff_name_prefix = A prefix string for the coefficient names. -# data_var_name_prefix = A prefix string for the data variable names. -# file_name = The file name to write the coefficients to. This is -# truncated before writing. -# -> print_interp_cmpt__lc_of_data := -> proc( -> posn_list::list(list(numeric)), -> result_var_name::string, -> coeff_name_prefix::string, -> data_var_name_prefix::string, -> file_name::string -> ) -> -> ftruncate(file_name); -> -> fprintf(file_name, "%s =\n", result_var_name); -> -# list of "coeff*data_var" terms -> map( -> proc(posn::list(numeric)) -> sprintf("%s*%s", -> coeff_name(posn,coeff_name_prefix), -> data_var_name(posn,data_var_name_prefix)); -> end proc -> , -> posn_list -> ); -> -> ListTools[Join](%, "\n\t+ "); -> cat(op(%)); -> fprintf(file_name, "\t%s;\n", %); -> -> fclose(file_name); -> -> NULL; -> end proc; -print_interp_cmpt__lc_of_data := proc(posn_list::list(list(numeric)), -result_var_name::string, coeff_name_prefix::string, -data_var_name_prefix::string, file_name::string) - ftruncate(file_name); - fprintf(file_name, "%s =\n", result_var_name); - map(proc(posn::list(numeric)) - sprintf("%s*%s", coeff_name(posn, coeff_name_prefix), - data_var_name(posn, data_var_name_prefix)) - end proc, posn_list); - ListTools[Join](%, "\n\t+ "); - cat(op(%)); - fprintf(file_name, "\t%s;\n", %); - fclose(file_name); - NULL -end proc - -> -################################################################################ -################################################################################ -################################################################################ -> -# -# This function computes the name of the coefficient of the data at a -# given [m] position, i.e. it encapsulates our naming convention for this. -# -# Arguments: -# posn = (in) The [m] coordinates. -# name_prefix = A prefix string for the coefficient name. -# -# Results: -# The function returns the coefficient, as a Maple string. -# -> coeff_name := -> proc(posn::list(numeric), name_prefix::string) -> cat(name_prefix, sprint_numeric_list(posn)); -> end proc; -coeff_name := proc(posn::list(numeric), name_prefix::string) - cat(name_prefix, sprint_numeric_list(posn)) -end proc - -> -################################################################################ -> -# -# This function computes the name of the variable in which the C code -# will store the input data at a given [m] position, i.e. it encapsulates -# our naming convention for this. -# -# Arguments: -# posn = (in) The [m] coordinates. -# name_prefix = A prefix string for the variable name. -# -# Results: -# The function returns the variable name, as a Maple string. -# -> data_var_name := -> proc(posn::list(numeric), name_prefix::string) -> cat(name_prefix, sprint_numeric_list(posn)); -> end proc; -data_var_name := proc(posn::list(numeric), name_prefix::string) - cat(name_prefix, sprint_numeric_list(posn)) -end proc - -# Maple code to compute 2-D Lagrange interpolation coefficients (orders 1-4) -# $Id: 2d.maple,v 1.3 2002/05/14 15:54:01 jthorn Exp $ -> -################################################################################ -> -# -# interpolating functions -# -> -> fn_2d_order1 := -> proc(x,y) -> + c01*y -> + c00 + c10*x -> end proc; - fn_2d_order1 := proc(x, y) c01*y + c00 + c10*x end proc - -> -> fn_2d_order2 := -> proc(x,y) -> + c02*y^2 -> + c01*y + c11*x*y -> + c00 + c10*x + c20*x^2 -> end proc; -fn_2d_order2 := - - proc(x, y) c02*y^2 + c01*y + c11*x*y + c00 + c10*x + c20*x^2 end proc - -> -> fn_2d_order3 := -> proc(x,y) -> + c03*y^3 -> + c02*y^2 + c12*x*y^2 -> + c01*y + c11*x*y + c21*x^2*y -> + c00 + c10*x + c20*x^2 + c30*x^3 -> end proc; -fn_2d_order3 := proc(x, y) - c03*y^3 + c02*y^2 + c12*x*y^2 + c01*y + c11*x*y + c21*x^2*y + c00 - + c10*x + c20*x^2 + c30*x^3 -end proc - -> -> fn_2d_order4 := -> proc(x,y) -> + c04*y^4 -> + c03*y^3 + c13*x*y^3 -> + c02*y^2 + c12*x*y^2 + c22*x^2*y^2 -> + c01*y + c11*x*y + c21*x^2*y + c31*x^3*y -> + c00 + c10*x + c20*x^2 + c30*x^3 + c40*x^4 -> end; -fn_2d_order4 := proc(x, y) - c04*y^4 + c03*y^3 + c13*x*y^3 + c02*y^2 + c12*x*y^2 + c22*x^2*y^2 - + c01*y + c11*x*y + c21*x^2*y + c31*x^3*y + c00 + c10*x + c20*x^2 - + c30*x^3 + c40*x^4 -end proc - -> -######################################## -> -# -# coefficients in interpolating functions -# -> -> coeff_list_2d_order1 := [ -> c01, -> c00, c10 -> ]; - coeff_list_2d_order1 := [c01, c00, c10] - -> coeff_list_2d_order2 := [ -> c02, -> c01, c11, -> c00, c10, c20 -> ]; - coeff_list_2d_order2 := [c02, c01, c11, c00, c10, c20] - -> coeff_list_2d_order3 := [ -> c03, -> c02, c12, -> c01, c11, c21, -> c00, c10, c20, c30 -> ]; - coeff_list_2d_order3 := [c03, c02, c12, c01, c11, c21, c00, c10, c20, c30] - -> coeff_list_2d_order4 := [ -> c04, -> c03, c13, -> c02, c12, c22, -> c01, c11, c21, c31, -> c00, c10, c20, c30, c40 -> ]; -coeff_list_2d_order4 := - - [c04, c03, c13, c02, c12, c22, c01, c11, c21, c31, c00, c10, c20, c30, c40] - -> -######################################## -> -# -# coordinates and interpolation points -# -> -> coord_list_2d := [x,y]; - coord_list_2d := [x, y] - -> -# generate points in Fortran ordering -> posn_list_2d_size2 := map(ListTools[Reverse], -> hypercube_points([ 0, 0], [+1,+1])); - posn_list_2d_size2 := [[0, 0], [1, 0], [0, 1], [1, 1]] - -> posn_list_2d_size3 := map(ListTools[Reverse], -> hypercube_points([-1,-1], [+1,+1])); -posn_list_2d_size3 := [[-1, -1], [0, -1], [1, -1], [-1, 0], [0, 0], [1, 0], - - [-1, 1], [0, 1], [1, 1]] - -> posn_list_2d_size4 := map(ListTools[Reverse], -> hypercube_points([-1,-1], [+2,+2])); -posn_list_2d_size4 := [[-1, -1], [0, -1], [1, -1], [2, -1], [-1, 0], [0, 0], - - [1, 0], [2, 0], [-1, 1], [0, 1], [1, 1], [2, 1], [-1, 2], [0, 2], [1, 2], - - [2, 2]] - -> posn_list_2d_size5 := map(ListTools[Reverse], -> hypercube_points([-2,-2], [+2,+2])); -posn_list_2d_size5 := [[-2, -2], [-1, -2], [0, -2], [1, -2], [2, -2], [-2, -1], - - [-1, -1], [0, -1], [1, -1], [2, -1], [-2, 0], [-1, 0], [0, 0], [1, 0], - - [2, 0], [-2, 1], [-1, 1], [0, 1], [1, 1], [2, 1], [-2, 2], [-1, 2], [0, 2], - - [1, 2], [2, 2]] - -> -################################################################################ -> -# -# generic stuff for 2d, cube, size=2 -# -> -> data_var_list_2d_size2 := map(data_var_name, posn_list_2d_size2, "data_"); - data_var_list_2d_size2 := ["data_0_0", "data_p1_0", "data_0_p1", "data_p1_p1"] - -> -> print_name_list_dcl(data_var_list_2d_size2, "fp", -> "2d.coeffs/2d.cube.size2/data-var.dcl.c"); -> print_data_var_assign(posn_list_2d_size2, "data_", -> "2d.coeffs/2d.cube.size2/data-var.assign.c"); -> -> print_interp_coeff_var_store(posn_list_2d_size2, "", "coeff_I_", -> "2d.coeffs/2d.cube.size2/coeff-I.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size2, "factor", "coeff_dx_", -> "2d.coeffs/2d.cube.size2/coeff-dx.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size2, "factor", "coeff_dy_", -> "2d.coeffs/2d.cube.size2/coeff-dy.store.c"); -> -> print_name_list_dcl(map(coeff_name, posn_list_2d_size2, "coeff_I_"), "fp", -> "2d.coeffs/2d.cube.size2/coeff-I.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size2, "coeff_dx_"), "fp", -> "2d.coeffs/2d.cube.size2/coeff-dx.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size2, "coeff_dy_"), "fp", -> "2d.coeffs/2d.cube.size2/coeff-dy.dcl.c"); -> -> print_interp_cmpt__lc_of_data(posn_list_2d_size2, -> "result", "coeff_I_", "data_", -> "2d.coeffs/2d.cube.size2/interp-I.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size2, -> "result", "coeff_dx_", "data_", -> "2d.coeffs/2d.cube.size2/interp-dx.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size2, -> "result", "coeff_dy_", "data_", -> "2d.coeffs/2d.cube.size2/interp-dy.compute.c"); -> -######################################## -> -# -# generic stuff for 2d, cube, size=3 -# -> -> data_var_list_2d_size3 := map(data_var_name, posn_list_2d_size3, "data_"); -data_var_list_2d_size3 := ["data_m1_m1", "data_0_m1", "data_p1_m1", "data_m1_0", - - "data_0_0", "data_p1_0", "data_m1_p1", "data_0_p1", "data_p1_p1"] - -> -> print_name_list_dcl(data_var_list_2d_size3, "fp", -> "2d.coeffs/2d.cube.size3/data-var.dcl.c"); -> print_data_var_assign(posn_list_2d_size3, "data_", -> "2d.coeffs/2d.cube.size3/data-var.assign.c"); -> -> print_interp_coeff_var_store(posn_list_2d_size3, "", "coeff_I_", -> "2d.coeffs/2d.cube.size3/coeff-I.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size3, "factor", "coeff_dx_", -> "2d.coeffs/2d.cube.size3/coeff-dx.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size3, "factor", "coeff_dy_", -> "2d.coeffs/2d.cube.size3/coeff-dy.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size3, "factor", "coeff_dxx_", -> "2d.coeffs/2d.cube.size3/coeff-dxx.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size3, "factor", "coeff_dxy_", -> "2d.coeffs/2d.cube.size3/coeff-dxy.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size3, "factor", "coeff_dyy_", -> "2d.coeffs/2d.cube.size3/coeff-dyy.store.c"); -> -> print_name_list_dcl(map(coeff_name, posn_list_2d_size3, "coeff_I_"), "fp", -> "2d.coeffs/2d.cube.size3/coeff-I.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size3, "coeff_dx_"), "fp", -> "2d.coeffs/2d.cube.size3/coeff-dx.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size3, "coeff_dy_"), "fp", -> "2d.coeffs/2d.cube.size3/coeff-dy.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size3, "coeff_dxx_"), "fp", -> "2d.coeffs/2d.cube.size3/coeff-dxx.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size3, "coeff_dxy_"), "fp", -> "2d.coeffs/2d.cube.size3/coeff-dxy.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size3, "coeff_dyy_"), "fp", -> "2d.coeffs/2d.cube.size3/coeff-dyy.dcl.c"); -> -> print_interp_cmpt__lc_of_data(posn_list_2d_size3, -> "result", "coeff_I_", "data_", -> "2d.coeffs/2d.cube.size3/interp-I.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size3, -> "result", "coeff_dx_", "data_", -> "2d.coeffs/2d.cube.size3/interp-dx.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size3, -> "result", "coeff_dy_", "data_", -> "2d.coeffs/2d.cube.size3/interp-dy.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size3, -> "result", "coeff_dxx_", "data_", -> "2d.coeffs/2d.cube.size3/interp-dxx.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size3, -> "result", "coeff_dxy_", "data_", -> "2d.coeffs/2d.cube.size3/interp-dxy.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size3, -> "result", "coeff_dyy_", "data_", -> "2d.coeffs/2d.cube.size3/interp-dyy.compute.c"); -> -######################################## -> -# -# generic stuff for 2d, cube, size=4 -# -> -> data_var_list_2d_size4 := map(data_var_name, posn_list_2d_size4, "data_"); -data_var_list_2d_size4 := ["data_m1_m1", "data_0_m1", "data_p1_m1", - - "data_p2_m1", "data_m1_0", "data_0_0", "data_p1_0", "data_p2_0", - - "data_m1_p1", "data_0_p1", "data_p1_p1", "data_p2_p1", "data_m1_p2", - - "data_0_p2", "data_p1_p2", "data_p2_p2"] - -> -> print_name_list_dcl(data_var_list_2d_size4, "fp", -> "2d.coeffs/2d.cube.size4/data-var.dcl.c"); -> print_data_var_assign(posn_list_2d_size4, "data_", -> "2d.coeffs/2d.cube.size4/data-var.assign.c"); -> -> print_interp_coeff_var_store(posn_list_2d_size4, "", "coeff_I_", -> "2d.coeffs/2d.cube.size4/coeff-I.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size4, "factor", "coeff_dx_", -> "2d.coeffs/2d.cube.size4/coeff-dx.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size4, "factor", "coeff_dy_", -> "2d.coeffs/2d.cube.size4/coeff-dy.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size4, "factor", "coeff_dxx_", -> "2d.coeffs/2d.cube.size4/coeff-dxx.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size4, "factor", "coeff_dxy_", -> "2d.coeffs/2d.cube.size4/coeff-dxy.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size4, "factor", "coeff_dyy_", -> "2d.coeffs/2d.cube.size4/coeff-dyy.store.c"); -> -> print_name_list_dcl(map(coeff_name, posn_list_2d_size4, "coeff_I_"), "fp", -> "2d.coeffs/2d.cube.size4/coeff-I.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size4, "coeff_dx_"), "fp", -> "2d.coeffs/2d.cube.size4/coeff-dx.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size4, "coeff_dy_"), "fp", -> "2d.coeffs/2d.cube.size4/coeff-dy.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size4, "coeff_dxx_"), "fp", -> "2d.coeffs/2d.cube.size4/coeff-dxx.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size4, "coeff_dxy_"), "fp", -> "2d.coeffs/2d.cube.size4/coeff-dxy.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size4, "coeff_dyy_"), "fp", -> "2d.coeffs/2d.cube.size4/coeff-dyy.dcl.c"); -> -> print_interp_cmpt__lc_of_data(posn_list_2d_size4, -> "result", "coeff_I_", "data_", -> "2d.coeffs/2d.cube.size4/interp-I.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size4, -> "result", "coeff_dx_", "data_", -> "2d.coeffs/2d.cube.size4/interp-dx.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size4, -> "result", "coeff_dy_", "data_", -> "2d.coeffs/2d.cube.size4/interp-dy.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size4, -> "result", "coeff_dxx_", "data_", -> "2d.coeffs/2d.cube.size4/interp-dxx.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size4, -> "result", "coeff_dxy_", "data_", -> "2d.coeffs/2d.cube.size4/interp-dxy.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size4, -> "result", "coeff_dyy_", "data_", -> "2d.coeffs/2d.cube.size4/interp-dyy.compute.c"); -bytes used=1000500, alloc=917336, time=0.11 -> -######################################## -> -# -# generic stuff for 2d, cube, size=5 -# -> -> data_var_list_2d_size5 := map(data_var_name, posn_list_2d_size5, "data_"); -data_var_list_2d_size5 := ["data_m2_m2", "data_m1_m2", "data_0_m2", - - "data_p1_m2", "data_p2_m2", "data_m2_m1", "data_m1_m1", "data_0_m1", - - "data_p1_m1", "data_p2_m1", "data_m2_0", "data_m1_0", "data_0_0", - - "data_p1_0", "data_p2_0", "data_m2_p1", "data_m1_p1", "data_0_p1", - - "data_p1_p1", "data_p2_p1", "data_m2_p2", "data_m1_p2", "data_0_p2", - - "data_p1_p2", "data_p2_p2"] - -> -> print_name_list_dcl(data_var_list_2d_size5, "fp", -> "2d.coeffs/2d.cube.size5/data-var.dcl.c"); -> print_data_var_assign(posn_list_2d_size5, "data_", -> "2d.coeffs/2d.cube.size5/data-var.assign.c"); -> -> print_interp_coeff_var_store(posn_list_2d_size5, "", "coeff_I_", -> "2d.coeffs/2d.cube.size5/coeff-I.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size5, "factor", "coeff_dx_", -> "2d.coeffs/2d.cube.size5/coeff-dx.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size5, "factor", "coeff_dy_", -> "2d.coeffs/2d.cube.size5/coeff-dy.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size5, "factor", "coeff_dxx_", -> "2d.coeffs/2d.cube.size5/coeff-dxx.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size5, "factor", "coeff_dxy_", -> "2d.coeffs/2d.cube.size5/coeff-dxy.store.c"); -> print_interp_coeff_var_store(posn_list_2d_size5, "factor", "coeff_dyy_", -> "2d.coeffs/2d.cube.size5/coeff-dyy.store.c"); -> -> print_name_list_dcl(map(coeff_name, posn_list_2d_size5, "coeff_I_"), "fp", -> "2d.coeffs/2d.cube.size5/coeff-I.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size5, "coeff_dx_"), "fp", -> "2d.coeffs/2d.cube.size5/coeff-dx.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size5, "coeff_dy_"), "fp", -> "2d.coeffs/2d.cube.size5/coeff-dy.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size5, "coeff_dxx_"), "fp", -> "2d.coeffs/2d.cube.size5/coeff-dxx.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size5, "coeff_dxy_"), "fp", -> "2d.coeffs/2d.cube.size5/coeff-dxy.dcl.c"); -> print_name_list_dcl(map(coeff_name, posn_list_2d_size5, "coeff_dyy_"), "fp", -> "2d.coeffs/2d.cube.size5/coeff-dyy.dcl.c"); -> -> print_interp_cmpt__lc_of_data(posn_list_2d_size5, -> "result", "coeff_I_", "data_", -> "2d.coeffs/2d.cube.size5/interp-I.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size5, -> "result", "coeff_dx_", "data_", -> "2d.coeffs/2d.cube.size5/interp-dx.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size5, -> "result", "coeff_dy_", "data_", -> "2d.coeffs/2d.cube.size5/interp-dy.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size5, -> "result", "coeff_dxx_", "data_", -> "2d.coeffs/2d.cube.size5/interp-dxx.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size5, -> "result", "coeff_dxy_", "data_", -> "2d.coeffs/2d.cube.size5/interp-dxy.compute.c"); -> print_interp_cmpt__lc_of_data(posn_list_2d_size5, -> "result", "coeff_dyy_", "data_", -> "2d.coeffs/2d.cube.size5/interp-dyy.compute.c"); -> -> -################################################################################ -> -# -# 2d, cube, order=1, smoothing=0 (size=2) -# -> -# interpolating polynomial -> interp_2d_cube_order1_smooth0 -> := polynomial_interpolant(fn_2d_order1, coeff_list_2d_order1, -> coord_list_2d, posn_list_2d_size2); -bytes used=2000924, alloc=1179432, time=0.19 -interp_2d_cube_order1_smooth0 := - - (1/2 DATA(1, 1) - 1/2 DATA(0, 0) - 1/2 DATA(1, 0) + 1/2 DATA(0, 1)) y - - - 1/4 DATA(1, 1) + 3/4 DATA(0, 0) + 1/4 DATA(1, 0) + 1/4 DATA(0, 1) - - + (1/2 DATA(1, 1) - 1/2 DATA(0, 0) + 1/2 DATA(1, 0) - 1/2 DATA(0, 1)) x - -> -# I -> coeff_as_lc_of_data(%, posn_list_2d_size2); -[COEFF(0, 0) = 3/4 - 1/2 y - 1/2 x, COEFF(1, 0) = 1/4 - 1/2 y + 1/2 x, - - COEFF(0, 1) = - 1/2 x + 1/4 + 1/2 y, COEFF(1, 1) = 1/2 y - 1/4 + 1/2 x] - -> print_coeff__lc_of_data(%, "coeff_I_", "fp", -> "2d.coeffs/2d.cube.order1.smooth0/coeff-I.compute.c"); -> -# d/dx -> simplify( diff(interp_2d_cube_order1_smooth0,x) ); - 1/2 DATA(1, 1) - 1/2 DATA(0, 0) + 1/2 DATA(1, 0) - 1/2 DATA(0, 1) - -> coeff_as_lc_of_data(%, posn_list_2d_size2); - [COEFF(0, 0) = -1/2, COEFF(1, 0) = 1/2, COEFF(0, 1) = -1/2, COEFF(1, 1) = 1/2] - -> print_coeff__lc_of_data(%, "coeff_dx_", "fp", -> "2d.coeffs/2d.cube.order1.smooth0/coeff-dx.compute.c"); -bytes used=3001148, alloc=1376004, time=0.25 -> -# d/dy -> simplify( diff(interp_2d_cube_order1_smooth0,y) ); - 1/2 DATA(1, 1) - 1/2 DATA(0, 0) - 1/2 DATA(1, 0) + 1/2 DATA(0, 1) - -> coeff_as_lc_of_data(%, posn_list_2d_size2); - [COEFF(0, 0) = -1/2, COEFF(1, 0) = -1/2, COEFF(0, 1) = 1/2, COEFF(1, 1) = 1/2] - -> print_coeff__lc_of_data(%, "coeff_dy_", "fp", -> "2d.coeffs/2d.cube.order1.smooth0/coeff-dy.compute.c"); -> -######################################## -> -# -# 2d, cube, order=2, smoothing=0 (size=3) -# -> -# interpolating polynomial -> interp_2d_cube_order2_smooth0 -> := polynomial_interpolant(fn_2d_order2, coeff_list_2d_order2, -> coord_list_2d, posn_list_2d_size3); -interp_2d_cube_order2_smooth0 := (- 1/3 DATA(-1, 0) + 1/6 DATA(-1, -1) - - + 1/6 DATA(0, -1) + 1/6 DATA(0, 1) - 1/3 DATA(1, 0) - 1/3 DATA(0, 0) - - 2 - + 1/6 DATA(1, -1) + 1/6 DATA(-1, 1) + 1/6 DATA(1, 1)) y + ( - - 1/6 DATA(-1, 1) - 1/6 DATA(-1, -1) - 1/6 DATA(0, -1) - 1/6 DATA(1, -1) - - + 1/6 DATA(0, 1) + 1/6 DATA(1, 1)) y + - - (1/4 DATA(1, 1) + 1/4 DATA(-1, -1) - 1/4 DATA(1, -1) - 1/4 DATA(-1, 1)) x y - - + 2/9 DATA(-1, 0) - 1/9 DATA(-1, -1) + 2/9 DATA(0, -1) + 2/9 DATA(0, 1) - - + 2/9 DATA(1, 0) + 5/9 DATA(0, 0) - 1/9 DATA(1, -1) - 1/9 DATA(-1, 1) - - - 1/9 DATA(1, 1) + (1/6 DATA(1, 0) - 1/6 DATA(-1, -1) + 1/6 DATA(1, -1) - - - 1/6 DATA(-1, 0) - 1/6 DATA(-1, 1) + 1/6 DATA(1, 1)) x + (1/6 DATA(-1, 0) - - + 1/6 DATA(-1, -1) - 1/3 DATA(0, -1) - 1/3 DATA(0, 1) + 1/6 DATA(1, 0) - - 2 - - 1/3 DATA(0, 0) + 1/6 DATA(1, -1) + 1/6 DATA(-1, 1) + 1/6 DATA(1, 1)) x - -> -# I -> coeff_as_lc_of_data(%, posn_list_2d_size3); - 2 2 -[COEFF(-1, -1) = - 1/6 y + 1/6 y - 1/9 - 1/6 x + 1/4 x y + 1/6 x , - - 2 2 - COEFF(0, -1) = 2/9 - 1/6 y + 1/6 y - 1/3 x , - - 2 2 - COEFF(1, -1) = - 1/6 y - 1/4 x y + 1/6 y + 1/6 x + 1/6 x - 1/9, - - 2 2 - COEFF(-1, 0) = - 1/3 y - 1/6 x + 1/6 x + 2/9, - - 2 2 - COEFF(0, 0) = - 1/3 y - 1/3 x + 5/9, - - 2 2 - COEFF(1, 0) = 2/9 - 1/3 y + 1/6 x + 1/6 x, - - 2 2 - COEFF(-1, 1) = 1/6 y + 1/6 x + 1/6 y - 1/4 x y - 1/6 x - 1/9, - - 2 2 - COEFF(0, 1) = - 1/3 x + 1/6 y + 2/9 + 1/6 y , - - 2 2 - COEFF(1, 1) = 1/6 y + 1/6 y - 1/9 + 1/6 x + 1/6 x + 1/4 x y] - -> print_coeff__lc_of_data(%, "coeff_I_", "fp", -> "2d.coeffs/2d.cube.order2.smooth0/coeff-I.compute.c"); -bytes used=4002492, alloc=1769148, time=0.34 -bytes used=5002672, alloc=1769148, time=0.42 -> -# d/dx -> simplify( diff(interp_2d_cube_order2_smooth0,x) ); -1/4 y DATA(1, 1) + 1/4 y DATA(-1, -1) - 1/4 y DATA(1, -1) - 1/4 y DATA(-1, 1) - - + 1/6 DATA(1, 0) - 1/6 DATA(-1, -1) + 1/6 DATA(1, -1) - 1/6 DATA(-1, 0) - - - 1/6 DATA(-1, 1) + 1/6 DATA(1, 1) + 1/3 x DATA(-1, 0) - - + 1/3 x DATA(-1, -1) - 2/3 x DATA(0, -1) - 2/3 x DATA(0, 1) - - + 1/3 x DATA(1, 0) - 2/3 x DATA(0, 0) + 1/3 x DATA(1, -1) - - + 1/3 x DATA(-1, 1) + 1/3 x DATA(1, 1) - -> coeff_as_lc_of_data(%, posn_list_2d_size3); -[COEFF(-1, -1) = 1/4 y + 1/3 x - 1/6, COEFF(0, -1) = - 2/3 x, - - COEFF(1, -1) = - 1/4 y + 1/3 x + 1/6, COEFF(-1, 0) = 1/3 x - 1/6, - - COEFF(0, 0) = - 2/3 x, COEFF(1, 0) = 1/3 x + 1/6, - - COEFF(-1, 1) = 1/3 x - 1/4 y - 1/6, COEFF(0, 1) = - 2/3 x, - - COEFF(1, 1) = 1/4 y + 1/3 x + 1/6] - -> print_coeff__lc_of_data(%, "coeff_dx_", "fp", -> "2d.coeffs/2d.cube.order2.smooth0/coeff-dx.compute.c"); -bytes used=6002856, alloc=1834672, time=0.51 -> -# d/dy -> simplify( diff(interp_2d_cube_order2_smooth0,y) ); -- 2/3 y DATA(-1, 0) + 1/3 y DATA(-1, -1) + 1/3 y DATA(0, -1) + 1/3 y DATA(0, 1) - - - 2/3 y DATA(1, 0) - 2/3 y DATA(0, 0) + 1/3 y DATA(1, -1) - - + 1/3 y DATA(-1, 1) + 1/3 y DATA(1, 1) + 1/6 DATA(-1, 1) - - - 1/6 DATA(-1, -1) - 1/6 DATA(0, -1) - 1/6 DATA(1, -1) + 1/6 DATA(0, 1) - - + 1/6 DATA(1, 1) + 1/4 x DATA(1, 1) + 1/4 x DATA(-1, -1) - - - 1/4 x DATA(1, -1) - 1/4 x DATA(-1, 1) - -> coeff_as_lc_of_data(%, posn_list_2d_size3); -[COEFF(-1, -1) = - 1/6 + 1/4 x + 1/3 y, COEFF(0, -1) = - 1/6 + 1/3 y, - - COEFF(1, -1) = - 1/4 x + 1/3 y - 1/6, COEFF(-1, 0) = - 2/3 y, - - COEFF(0, 0) = - 2/3 y, COEFF(1, 0) = - 2/3 y, - - COEFF(-1, 1) = - 1/4 x + 1/6 + 1/3 y, COEFF(0, 1) = 1/3 y + 1/6, - - COEFF(1, 1) = 1/3 y + 1/6 + 1/4 x] - -> print_coeff__lc_of_data(%, "coeff_dy_", "fp", -> "2d.coeffs/2d.cube.order2.smooth0/coeff-dy.compute.c"); -bytes used=7003424, alloc=1834672, time=0.58 -> -# d^2/dx^2 -> simplify( diff(interp_2d_cube_order2_smooth0,x,x) ); -1/3 DATA(-1, 0) + 1/3 DATA(-1, -1) - 2/3 DATA(0, -1) - 2/3 DATA(0, 1) - - + 1/3 DATA(1, 0) - 2/3 DATA(0, 0) + 1/3 DATA(1, -1) + 1/3 DATA(-1, 1) - - + 1/3 DATA(1, 1) - -> coeff_as_lc_of_data(%, posn_list_2d_size3); -[COEFF(-1, -1) = 1/3, COEFF(0, -1) = -2/3, COEFF(1, -1) = 1/3, - - COEFF(-1, 0) = 1/3, COEFF(0, 0) = -2/3, COEFF(1, 0) = 1/3, - - COEFF(-1, 1) = 1/3, COEFF(0, 1) = -2/3, COEFF(1, 1) = 1/3] - -> print_coeff__lc_of_data(%, "coeff_dxx_", "fp", -> "2d.coeffs/2d.cube.order2.smooth0/coeff-dxx.compute.c"); -> -# d^2/dxdy -> simplify( diff(interp_2d_cube_order2_smooth0,x,y) ); - 1/4 DATA(1, 1) + 1/4 DATA(-1, -1) - 1/4 DATA(1, -1) - 1/4 DATA(-1, 1) - -> coeff_as_lc_of_data(%, posn_list_2d_size3); -[COEFF(-1, -1) = 1/4, COEFF(0, -1) = 0, COEFF(1, -1) = -1/4, COEFF(-1, 0) = 0, - - COEFF(0, 0) = 0, COEFF(1, 0) = 0, COEFF(-1, 1) = -1/4, COEFF(0, 1) = 0, - - COEFF(1, 1) = 1/4] - -> print_coeff__lc_of_data(%, "coeff_dxy_", "fp", -> "2d.coeffs/2d.cube.order2.smooth0/coeff-dxy.compute.c"); -> -# d^2/dy^2 -> simplify( diff(interp_2d_cube_order2_smooth0,y,y) ); -- 2/3 DATA(-1, 0) + 1/3 DATA(-1, -1) + 1/3 DATA(0, -1) + 1/3 DATA(0, 1) - - - 2/3 DATA(1, 0) - 2/3 DATA(0, 0) + 1/3 DATA(1, -1) + 1/3 DATA(-1, 1) - - + 1/3 DATA(1, 1) - -> coeff_as_lc_of_data(%, posn_list_2d_size3); -[COEFF(-1, -1) = 1/3, COEFF(0, -1) = 1/3, COEFF(1, -1) = 1/3, - - COEFF(-1, 0) = -2/3, COEFF(0, 0) = -2/3, COEFF(1, 0) = -2/3, - - COEFF(-1, 1) = 1/3, COEFF(0, 1) = 1/3, COEFF(1, 1) = 1/3] - -> print_coeff__lc_of_data(%, "coeff_dyy_", "fp", -> "2d.coeffs/2d.cube.order2.smooth0/coeff-dyy.compute.c"); -bytes used=8003588, alloc=1834672, time=0.65 -> -######################################## -> -# -# 2d, cube, order=3, smoothing=0 (size=4) -# -> -# interpolating polynomial -> interp_2d_cube_order3_smooth0 -> := polynomial_interpolant(fn_2d_order3, coeff_list_2d_order3, -> coord_list_2d, posn_list_2d_size4); -bytes used=9004508, alloc=1900196, time=0.72 -bytes used=10005524, alloc=1965720, time=0.78 -bytes used=11005724, alloc=1965720, time=0.84 -bytes used=12007400, alloc=1965720, time=0.90 -interp_2d_cube_order3_smooth0 := (- 1/40 DATA(1, 1) + 1/40 DATA(0, 0) - - - 1/40 DATA(1, 0) + 1/40 DATA(0, 1) - 3/40 DATA(2, 0) + 3/40 DATA(2, -1) - - - 3/40 DATA(-1, -1) - 1/40 DATA(0, -1) + 1/40 DATA(1, -1) - - + 3/40 DATA(-1, 0) + 3/40 DATA(-1, 1) + 3/40 DATA(2, 2) + 1/40 DATA(1, 2) - - 2 / - - 1/40 DATA(0, 2) - 3/40 DATA(-1, 2) - 3/40 DATA(2, 1)) x y + | - \ - - 3/50 DATA(1, 1) - 1/25 DATA(0, 0) - 1/100 DATA(1, 0) - 1/100 DATA(0, 1) - - + 7/100 DATA(2, 0) - 9/100 DATA(2, -1) + 6/25 DATA(-1, -1) - - 13 13 - - 1/50 DATA(0, -1) - --- DATA(1, -1) - 1/50 DATA(-1, 0) - --- DATA(-1, 1) - 100 100 - - - 3/50 DATA(2, 2) + 2/25 DATA(1, 2) + 7/100 DATA(0, 2) - 9/100 DATA(-1, 2) - - \ - + 2/25 DATA(2, 1)| x y + (- 1/40 DATA(1, 1) + 1/40 DATA(0, 0) - / - - + 1/40 DATA(1, 0) - 1/40 DATA(0, 1) - 1/40 DATA(2, 0) - 3/40 DATA(2, -1) - - - 3/40 DATA(-1, -1) + 3/40 DATA(0, -1) + 3/40 DATA(1, -1) - - - 1/40 DATA(-1, 0) + 1/40 DATA(-1, 1) + 3/40 DATA(2, 2) - 3/40 DATA(1, 2) - - 2 - - 3/40 DATA(0, 2) + 3/40 DATA(-1, 2) + 1/40 DATA(2, 1)) x y - - 17 93 37 37 - - --- DATA(1, 1) + --- DATA(0, 0) + --- DATA(1, 0) + --- DATA(0, 1) - 200 200 200 200 - - 13 17 23 11 - + --- DATA(2, 0) - --- DATA(2, -1) - --- DATA(-1, -1) + -- DATA(0, -1) - 100 200 200 50 - - 11 - - 1/50 DATA(1, -1) + -- DATA(-1, 0) - 1/50 DATA(-1, 1) + 7/200 DATA(2, 2) - 50 - - 13 17 / - - 2/25 DATA(1, 2) + --- DATA(0, 2) - --- DATA(-1, 2) - 2/25 DATA(2, 1) + | - 100 200 \ - - 103 57 117 63 - --- DATA(1, 1) - --- DATA(0, 0) + --- DATA(1, 0) - --- DATA(0, 1) - 400 400 400 400 - - 43 131 109 31 - + ---- DATA(2, 0) - ---- DATA(2, -1) - ---- DATA(-1, -1) - --- DATA(0, -1) - 1200 1200 1200 400 - - 111 223 157 149 - + --- DATA(1, -1) - ---- DATA(-1, 0) - ---- DATA(-1, 1) - ---- DATA(2, 2) - 400 1200 1200 1200 - - 69 49 89 37 \ - + --- DATA(1, 2) - --- DATA(0, 2) + ---- DATA(-1, 2) + ---- DATA(2, 1)| x - 400 400 1200 1200 / - - /11 21 19 - + |-- DATA(1, 1) - -- DATA(0, 0) + 9/80 DATA(1, 0) - -- DATA(0, 1) - \80 80 80 - - 13 23 - + 1/80 DATA(2, 0) + 3/80 DATA(2, -1) + -- DATA(-1, -1) - -- DATA(0, -1) - 80 80 - - 11 - + 7/80 DATA(1, -1) + -- DATA(-1, 0) + 9/80 DATA(-1, 1) - 3/80 DATA(2, 2) - 80 - - 13 17 \ 2 - + -- DATA(1, 2) - -- DATA(0, 2) + 7/80 DATA(-1, 2) - 1/80 DATA(2, 1)| x - 80 80 / - - + (- 1/8 DATA(1, 1) + 1/8 DATA(0, 0) - 1/8 DATA(1, 0) + 1/8 DATA(0, 1) - - + 1/24 DATA(2, 0) + 1/24 DATA(2, -1) - 1/24 DATA(-1, -1) + 1/8 DATA(0, -1) - - - 1/8 DATA(1, -1) - 1/24 DATA(-1, 0) - 1/24 DATA(-1, 1) + 1/24 DATA(2, 2) - - 3 - - 1/8 DATA(1, 2) + 1/8 DATA(0, 2) - 1/24 DATA(-1, 2) + 1/24 DATA(2, 1)) x - - + (- 1/8 DATA(1, 1) + 1/8 DATA(0, 0) + 1/8 DATA(1, 0) - 1/8 DATA(0, 1) - - + 1/8 DATA(2, 0) - 1/24 DATA(2, -1) - 1/24 DATA(-1, -1) - 1/24 DATA(0, -1) - - - 1/24 DATA(1, -1) + 1/8 DATA(-1, 0) - 1/8 DATA(-1, 1) + 1/24 DATA(2, 2) - - + 1/24 DATA(1, 2) + 1/24 DATA(0, 2) + 1/24 DATA(-1, 2) - 1/8 DATA(2, 1)) - - 3 /11 21 19 - y + |-- DATA(1, 1) - -- DATA(0, 0) - -- DATA(1, 0) + 9/80 DATA(0, 1) - \80 80 80 - - 17 13 11 - - -- DATA(2, 0) + 7/80 DATA(2, -1) + -- DATA(-1, -1) + -- DATA(0, -1) - 80 80 80 - - 23 - + 9/80 DATA(1, -1) - -- DATA(-1, 0) + 7/80 DATA(-1, 1) - 3/80 DATA(2, 2) - 80 - - 13 \ 2 - - 1/80 DATA(1, 2) + 1/80 DATA(0, 2) + 3/80 DATA(-1, 2) + -- DATA(2, 1)| y - 80 / - - /103 57 63 117 - + |--- DATA(1, 1) - --- DATA(0, 0) - --- DATA(1, 0) + --- DATA(0, 1) - \400 400 400 400 - - 49 89 109 223 - - --- DATA(2, 0) + ---- DATA(2, -1) - ---- DATA(-1, -1) - ---- DATA(0, -1) - 400 1200 1200 1200 - - 157 31 111 149 - - ---- DATA(1, -1) - --- DATA(-1, 0) + --- DATA(-1, 1) - ---- DATA(2, 2) - 1200 400 400 1200 - - 37 43 131 69 \ - + ---- DATA(1, 2) + ---- DATA(0, 2) - ---- DATA(-1, 2) + --- DATA(2, 1)| y - 1200 1200 1200 400 / - -> -# I -> coeff_as_lc_of_data(%, posn_list_2d_size4); -bytes used=13007752, alloc=1965720, time=0.95 - 109 13 2 3 2 3 23 13 2 -[COEFF(-1, -1) = - ---- y + -- x - 1/24 x - 3/40 x y - 1/24 y - --- + -- y - 1200 80 200 80 - - 2 109 11 2 223 31 - - 3/40 x y - ---- x + 6/25 x y, COEFF(0, -1) = -- y - ---- y - --- x - 1200 80 1200 400 - - 3 2 2 3 23 2 11 - - 1/24 y + 3/40 x y - 1/40 x y + 1/8 x - 1/50 x y - -- x + --, - 80 50 - - 3 2 3 2 2 - COEFF(1, -1) = - 1/8 x + 1/40 x y - 1/24 y + 9/80 y + 3/40 x y - 1/50 - - 2 111 157 13 2 2 - + 7/80 x + --- x - ---- y - --- x y, COEFF(2, -1) = - 3/40 x y + 3/80 x - 400 1200 100 - - 2 89 3 2 3 131 - + 7/80 y - 9/100 x y + ---- y - 1/24 y + 3/40 x y + 1/24 x - ---- x - 1200 1200 - - 17 23 2 31 11 2 11 223 - - ---, COEFF(-1, 0) = - -- y - 1/50 x y - --- y + -- x + -- - ---- x - 200 80 400 80 50 1200 - - 3 2 2 3 2 - + 1/8 y - 1/40 x y + 3/40 x y - 1/24 x , COEFF(0, 0) = 1/40 x y - - 57 2 3 21 2 93 3 21 2 - - --- y + 1/40 x y + 1/8 y - 1/25 x y - -- y + --- + 1/8 x - -- x - 400 80 200 80 - - 57 3 2 3 2 - - --- x, COEFF(1, 0) = - 1/8 x - 1/40 x y + 1/8 y - 1/100 x y + 9/80 x - 400 - - 19 2 37 63 117 2 49 3 - - -- y + --- - --- y + --- x + 1/40 x y, COEFF(2, 0) = - --- y + 1/8 y - 80 200 400 400 400 - - 17 2 3 43 2 2 13 - - -- y + 1/24 x + ---- x - 1/40 x y - 3/40 x y + 7/100 x y + --- - 80 1200 100 - - 2 111 3 2 2 157 - + 1/80 x , COEFF(-1, 1) = --- y - 1/24 x + 1/40 x y + 7/80 y - ---- x - 400 1200 - - 2 13 2 3 2 - + 9/80 x - --- x y + 3/40 x y - 1/8 y - 1/50, COEFF(0, 1) = - 1/40 x y - 100 - - 2 37 3 3 117 2 19 2 - + 9/80 y - 1/100 x y + --- - 1/8 y + 1/8 x + --- y + 1/40 x y - -- x - 200 400 80 - - 63 2 11 2 3 17 - - --- x, COEFF(1, 1) = - 1/40 x y + -- y - 1/8 x - --- + 3/50 x y - 400 80 200 - - 103 3 2 11 2 103 2 - + --- y - 1/8 y - 1/40 x y + -- x + --- x, COEFF(2, 1) = 1/40 x y - 400 80 400 - - 2 13 2 3 69 3 37 - - 1/80 x + -- y - 2/25 - 1/8 y + --- y + 1/24 x + 2/25 x y + ---- x - 80 400 1200 - - 2 17 131 2 - - 3/40 x y , COEFF(-1, 2) = - --- - ---- y - 9/100 x y + 3/40 x y - 200 1200 - - 89 2 2 3 2 3 - + ---- x - 3/40 x y + 3/80 y - 1/24 x + 7/80 x + 1/24 y , COEFF(0, 2) - 1200 - - 49 2 2 2 3 43 3 - = - --- x - 1/40 x y + 1/80 y - 3/40 x y + 1/8 x + ---- y + 1/24 y - 400 1200 - - 17 2 13 69 37 13 2 - - -- x + 7/100 x y + ---, COEFF(1, 2) = --- x + ---- y + -- x - 80 100 400 1200 80 - - 2 2 3 2 3 - - 3/40 x y + 2/25 x y - 2/25 + 1/40 x y - 1/8 x - 1/80 y + 1/24 y , - - 2 149 149 3 - COEFF(2, 2) = 3/40 x y - ---- y + 7/200 - ---- x + 1/24 x - 3/50 x y - 1200 1200 - - 3 2 2 2 - + 1/24 y - 3/80 x - 3/80 y + 3/40 x y ] - -> print_coeff__lc_of_data(%, "coeff_I_", "fp", -> "2d.coeffs/2d.cube.order3.smooth0/coeff-I.compute.c"); -bytes used=14007904, alloc=1965720, time=1.02 -bytes used=15013804, alloc=1965720, time=1.08 -bytes used=16014220, alloc=1965720, time=1.14 -bytes used=17014580, alloc=1965720, time=1.22 -bytes used=18014732, alloc=1965720, time=1.31 -bytes used=19014940, alloc=1965720, time=1.41 -bytes used=20015096, alloc=1965720, time=1.49 -bytes used=21015332, alloc=1965720, time=1.57 -> -# d/dx -> simplify( diff(interp_2d_cube_order3_smooth0,x) ); -bytes used=22015608, alloc=2031244, time=1.66 -bytes used=23016856, alloc=2096768, time=1.72 - 2 2 2 -- 1/40 y DATA(1, 0) - 1/40 y DATA(0, -1) - 3/40 y DATA(-1, -1) - - 2 2 2 - + 1/40 y DATA(1, 2) + 3/40 y DATA(2, 2) + 3/40 y DATA(-1, 1) - - 2 2 13 - + 3/40 y DATA(-1, 0) + 1/40 y DATA(1, -1) + -- x DATA(1, 2) - 40 - - 2 2 2 - - 1/40 y DATA(1, 1) + 1/40 y DATA(0, 0) + 3/40 y DATA(2, -1) - - 2 2 - - 3/40 y DATA(2, 0) + 1/40 y DATA(0, 1) + 7/40 x DATA(-1, 2) - - 11 - + 7/40 x DATA(1, -1) + -- x DATA(-1, 0) + 9/40 x DATA(-1, 1) - 40 - - 23 2 - - 3/40 x DATA(2, 2) - -- x DATA(0, -1) - 3/8 x DATA(1, -1) - 40 - - 2 2 2 - - 1/8 x DATA(-1, 0) - 1/8 x DATA(-1, 1) + 1/8 x DATA(2, 2) - - 2 2 2 - - 3/8 x DATA(1, 2) + 3/8 x DATA(0, 2) - 1/8 x DATA(-1, 2) - - 2 2 2 - + 1/8 x DATA(2, 1) - 3/8 x DATA(1, 0) + 3/8 x DATA(0, 1) - - 2 2 2 - + 1/8 x DATA(2, 0) + 1/8 x DATA(2, -1) - 1/8 x DATA(-1, -1) - - 2 17 - + 3/8 x DATA(0, -1) - -- x DATA(0, 2) - 1/40 x DATA(2, 1) - 40 - - 2 2 - - 3/8 x DATA(1, 1) + 3/8 x DATA(0, 0) + 1/20 x y DATA(2, 1) - - 2 2 - - 1/100 y DATA(1, 0) - 1/40 y DATA(0, 2) - 3/40 y DATA(-1, 2) - - 2 - - 3/40 y DATA(2, 1) + 3/50 y DATA(1, 1) - 1/25 y DATA(0, 0) - - 13 11 - + -- x DATA(-1, -1) + -- x DATA(1, 1) - 3/50 y DATA(2, 2) - 40 40 - - + 2/25 y DATA(1, 2) + 7/100 y DATA(0, 2) - 9/100 y DATA(-1, 2) - - + 2/25 y DATA(2, 1) - 1/100 y DATA(0, 1) + 7/100 y DATA(2, 0) - - - 9/100 y DATA(2, -1) + 6/25 y DATA(-1, -1) - 1/50 y DATA(0, -1) - - 13 13 - - --- y DATA(1, -1) - 1/50 y DATA(-1, 0) - --- y DATA(-1, 1) - 100 100 - - 21 - - -- x DATA(0, 0) + 9/40 x DATA(1, 0) + 1/40 x DATA(2, 0) - 40 - - 103 - + 3/40 x DATA(2, -1) + 3/20 x y DATA(-1, 2) + --- DATA(1, 1) - 400 - - 57 117 63 43 - - --- DATA(0, 0) + --- DATA(1, 0) - --- DATA(0, 1) + ---- DATA(2, 0) - 400 400 400 1200 - - 131 109 31 111 - - ---- DATA(2, -1) - ---- DATA(-1, -1) - --- DATA(0, -1) + --- DATA(1, -1) - 1200 1200 400 400 - - 223 157 149 69 - - ---- DATA(-1, 0) - ---- DATA(-1, 1) - ---- DATA(2, 2) + --- DATA(1, 2) - 1200 1200 1200 400 - - 49 89 37 19 - - --- DATA(0, 2) + ---- DATA(-1, 2) + ---- DATA(2, 1) - -- x DATA(0, 1) - 400 1200 1200 40 - - - 3/20 x y DATA(0, 2) - 1/20 x y DATA(2, 0) - 3/20 x y DATA(2, -1) - - - 3/20 x y DATA(-1, -1) + 3/20 x y DATA(0, -1) + 3/20 x y DATA(1, -1) - - - 1/20 x y DATA(-1, 0) + 1/20 x y DATA(-1, 1) + 3/20 x y DATA(2, 2) - - - 3/20 x y DATA(1, 2) - 1/20 x y DATA(1, 1) + 1/20 x y DATA(0, 0) - - + 1/20 x y DATA(1, 0) - 1/20 x y DATA(0, 1) - -> coeff_as_lc_of_data(%, posn_list_2d_size4); - 13 109 2 2 -[COEFF(-1, -1) = -- x + 6/25 y - ---- - 3/20 x y - 1/8 x - 3/40 y , - 40 1200 - - 23 31 2 2 - COEFF(0, -1) = 3/20 x y - -- x - 1/50 y - --- - 1/40 y + 3/8 x , - 40 400 - - 2 13 2 111 - COEFF(1, -1) = 3/20 x y + 7/40 x + 1/40 y - --- y - 3/8 x + ---, - 100 400 - - 2 131 2 - COEFF(2, -1) = 1/8 x - ---- - 3/20 x y + 3/40 x - 9/100 y + 3/40 y , - 1200 - - 11 223 2 2 - COEFF(-1, 0) = -- x - ---- - 1/20 x y - 1/8 x + 3/40 y - 1/50 y, - 40 1200 - - 2 57 21 2 - COEFF(0, 0) = 1/20 x y + 1/40 y - --- - -- x + 3/8 x - 1/25 y, - 400 40 - - 117 2 2 - COEFF(1, 0) = - 1/100 y + 1/20 x y + 9/40 x + --- - 3/8 x - 1/40 y , - 400 - - 2 43 2 - COEFF(2, 0) = 1/8 x - 1/20 x y + 1/40 x + ---- - 3/40 y + 7/100 y, - 1200 - - 157 2 2 13 - COEFF(-1, 1) = - ---- - 1/8 x + 1/20 x y + 3/40 y + 9/40 x - --- y, - 1200 100 - - 2 63 19 2 - COEFF(0, 1) = 1/40 y - --- - 1/20 x y - -- x - 1/100 y + 3/8 x , - 400 40 - - 103 11 2 2 - COEFF(1, 1) = 3/50 y + --- + -- x - 1/20 x y - 3/8 x - 1/40 y , - 400 40 - - 2 37 2 - COEFF(2, 1) = - 3/40 y + ---- - 1/40 x + 2/25 y + 1/8 x + 1/20 x y, - 1200 - - 2 2 89 - COEFF(-1, 2) = - 3/40 y + 3/20 x y - 1/8 x + 7/40 x + ---- - 9/100 y, - 1200 - - 49 17 2 2 - COEFF(0, 2) = - --- + 7/100 y - 3/20 x y - -- x + 3/8 x - 1/40 y , - 400 40 - - 2 2 13 69 - COEFF(1, 2) = 2/25 y + 1/40 y - 3/20 x y - 3/8 x + -- x + ---, - 40 400 - - 2 2 149 - COEFF(2, 2) = 1/8 x + 3/20 x y + 3/40 y - 3/50 y - 3/40 x - ----] - 1200 - -> print_coeff__lc_of_data(%, "coeff_dx_", "fp", -> "2d.coeffs/2d.cube.order3.smooth0/coeff-dx.compute.c"); -bytes used=24017084, alloc=2096768, time=1.79 -bytes used=25017248, alloc=2096768, time=1.87 -bytes used=26021088, alloc=2096768, time=1.96 -bytes used=27021352, alloc=2096768, time=2.05 -> -# d/dy -> simplify( diff(interp_2d_cube_order3_smooth0,y) ); -bytes used=28022576, alloc=2096768, time=2.12 - 2 2 2 -3/8 y DATA(1, 0) - 1/8 y DATA(0, -1) - 1/8 y DATA(-1, -1) - - 2 2 2 - + 1/8 y DATA(1, 2) + 1/8 y DATA(2, 2) - 3/8 y DATA(-1, 1) - - 2 2 - + 3/8 y DATA(-1, 0) - 1/8 y DATA(1, -1) + 2/25 x DATA(1, 2) - - 2 2 2 - - 3/8 y DATA(1, 1) + 3/8 y DATA(0, 0) - 1/8 y DATA(2, -1) - - 2 2 - + 3/8 y DATA(2, 0) - 3/8 y DATA(0, 1) - 9/100 x DATA(-1, 2) - - 13 13 - - --- x DATA(1, -1) - 1/50 x DATA(-1, 0) - --- x DATA(-1, 1) - 100 100 - - 2 - - 3/50 x DATA(2, 2) - 1/50 x DATA(0, -1) + 3/40 x DATA(1, -1) - - 2 2 2 - - 1/40 x DATA(-1, 0) + 1/40 x DATA(-1, 1) + 3/40 x DATA(2, 2) - - 2 2 2 - - 3/40 x DATA(1, 2) - 3/40 x DATA(0, 2) + 3/40 x DATA(-1, 2) - - 2 2 2 - + 1/40 x DATA(2, 1) + 1/40 x DATA(1, 0) - 1/40 x DATA(0, 1) - - 2 2 2 - - 1/40 x DATA(2, 0) - 3/40 x DATA(2, -1) - 3/40 x DATA(-1, -1) - - 2 - + 3/40 x DATA(0, -1) + 7/100 x DATA(0, 2) + 2/25 x DATA(2, 1) - - 2 2 - - 1/40 x DATA(1, 1) + 1/40 x DATA(0, 0) - 3/20 x y DATA(2, 1) - - 19 2 2 - - -- y DATA(1, 0) + 1/8 y DATA(0, 2) + 1/8 y DATA(-1, 2) - 40 - - 2 11 21 - - 3/8 y DATA(2, 1) + -- y DATA(1, 1) - -- y DATA(0, 0) - 40 40 - - + 6/25 x DATA(-1, -1) + 3/50 x DATA(1, 1) - 3/40 y DATA(2, 2) - - - 1/40 y DATA(1, 2) + 1/40 y DATA(0, 2) + 3/40 y DATA(-1, 2) - - 13 17 - + -- y DATA(2, 1) + 9/40 y DATA(0, 1) - -- y DATA(2, 0) - 40 40 - - 13 11 - + 7/40 y DATA(2, -1) + -- y DATA(-1, -1) + -- y DATA(0, -1) - 40 40 - - 23 - + 9/40 y DATA(1, -1) - -- y DATA(-1, 0) + 7/40 y DATA(-1, 1) - 40 - - - 1/25 x DATA(0, 0) - 1/100 x DATA(1, 0) + 7/100 x DATA(2, 0) - - 103 - - 9/100 x DATA(2, -1) - 3/20 x y DATA(-1, 2) + --- DATA(1, 1) - 400 - - 57 63 117 49 - - --- DATA(0, 0) - --- DATA(1, 0) + --- DATA(0, 1) - --- DATA(2, 0) - 400 400 400 400 - - 89 109 223 - + ---- DATA(2, -1) - ---- DATA(-1, -1) - ---- DATA(0, -1) - 1200 1200 1200 - - 157 31 111 149 - - ---- DATA(1, -1) - --- DATA(-1, 0) + --- DATA(-1, 1) - ---- DATA(2, 2) - 1200 400 400 1200 - - 37 43 131 69 - + ---- DATA(1, 2) + ---- DATA(0, 2) - ---- DATA(-1, 2) + --- DATA(2, 1) - 1200 1200 1200 400 - - - 1/100 x DATA(0, 1) - 1/20 x y DATA(0, 2) - 3/20 x y DATA(2, 0) - - + 3/20 x y DATA(2, -1) - 3/20 x y DATA(-1, -1) - 1/20 x y DATA(0, -1) - - + 1/20 x y DATA(1, -1) + 3/20 x y DATA(-1, 0) + 3/20 x y DATA(-1, 1) - - + 3/20 x y DATA(2, 2) + 1/20 x y DATA(1, 2) - 1/20 x y DATA(1, 1) - - + 1/20 x y DATA(0, 0) - 1/20 x y DATA(1, 0) + 1/20 x y DATA(0, 1) - -> coeff_as_lc_of_data(%, posn_list_2d_size4); - 2 2 109 13 -[COEFF(-1, -1) = - 3/40 x + 6/25 x - 1/8 y - ---- + -- y - 3/20 x y, - 1200 40 - - 223 11 2 2 - COEFF(0, -1) = - ---- + -- y - 1/8 y - 1/50 x + 3/40 x - 1/20 x y, - 1200 40 - - 2 13 157 2 - COEFF(1, -1) = - 1/8 y + 1/20 x y + 9/40 y - --- x - ---- + 3/40 x , - 100 1200 - - 2 89 2 - COEFF(2, -1) = - 1/8 y + ---- + 7/40 y - 9/100 x + 3/20 x y - 3/40 x , - 1200 - - 2 23 2 31 - COEFF(-1, 0) = - 1/50 x - 1/40 x + 3/20 x y - -- y + 3/8 y - ---, - 40 400 - - 2 2 57 21 - COEFF(0, 0) = 3/8 y + 1/40 x - 1/25 x - --- - -- y + 1/20 x y, - 400 40 - - 19 63 2 2 - COEFF(1, 0) = - 1/20 x y - -- y - --- - 1/100 x + 1/40 x + 3/8 y , - 40 400 - - 2 49 17 2 - COEFF(2, 0) = - 3/20 x y + 3/8 y - --- + 7/100 x - -- y - 1/40 x , - 400 40 - - 2 2 13 111 - COEFF(-1, 1) = 3/20 x y + 1/40 x - 3/8 y + 7/40 y - --- x + ---, - 100 400 - - 117 2 2 - COEFF(0, 1) = --- + 9/40 y + 1/20 x y - 1/100 x - 1/40 x - 3/8 y , - 400 - - 2 103 2 11 - COEFF(1, 1) = 3/50 x - 3/8 y + --- - 1/20 x y - 1/40 x + -- y, - 400 40 - - 13 2 2 69 - COEFF(2, 1) = - 3/20 x y + -- y - 3/8 y + 2/25 x + 1/40 x + ---, - 40 400 - - 131 2 2 - COEFF(-1, 2) = - ---- + 1/8 y - 9/100 x + 3/40 x + 3/40 y - 3/20 x y, - 1200 - - 43 2 2 - COEFF(0, 2) = - 1/20 x y + 7/100 x + ---- + 1/40 y + 1/8 y - 3/40 x , - 1200 - - 2 2 37 - COEFF(1, 2) = 2/25 x - 3/40 x + 1/20 x y + 1/8 y + ---- - 1/40 y, - 1200 - - 2 2 149 - COEFF(2, 2) = 1/8 y - 3/50 x + 3/20 x y + 3/40 x - 3/40 y - ----] - 1200 - -> print_coeff__lc_of_data(%, "coeff_dy_", "fp", -> "2d.coeffs/2d.cube.order3.smooth0/coeff-dy.compute.c"); -bytes used=29022756, alloc=2096768, time=2.18 -bytes used=30022928, alloc=2096768, time=2.25 -bytes used=31023128, alloc=2096768, time=2.35 -bytes used=32023280, alloc=2096768, time=2.46 -> -# d^2/dx^2 -> simplify( diff(interp_2d_cube_order3_smooth0,x,x) ); -- 3/4 x DATA(1, 2) - 1/4 x DATA(-1, 2) - 3/4 x DATA(1, -1) - 1/4 x DATA(-1, 0) - - - 1/4 x DATA(-1, 1) + 1/4 x DATA(2, 2) + 3/4 x DATA(0, -1) - - + 3/4 x DATA(0, 2) + 1/4 x DATA(2, 1) + 1/20 y DATA(1, 0) - - - 1/20 y DATA(1, 1) + 1/20 y DATA(0, 0) - 1/4 x DATA(-1, -1) - - - 3/4 x DATA(1, 1) + 3/20 y DATA(2, 2) - 3/20 y DATA(1, 2) - - - 3/20 y DATA(0, 2) + 3/20 y DATA(-1, 2) + 1/20 y DATA(2, 1) - - - 1/20 y DATA(0, 1) - 1/20 y DATA(2, 0) - 3/20 y DATA(2, -1) - - - 3/20 y DATA(-1, -1) + 3/20 y DATA(0, -1) + 3/20 y DATA(1, -1) - - - 1/20 y DATA(-1, 0) + 1/20 y DATA(-1, 1) + 3/4 x DATA(0, 0) - - 11 - - 3/4 x DATA(1, 0) + 1/4 x DATA(2, 0) + 1/4 x DATA(2, -1) + -- DATA(1, 1) - 40 - - 21 19 - - -- DATA(0, 0) + 9/40 DATA(1, 0) - -- DATA(0, 1) + 1/40 DATA(2, 0) - 40 40 - - 13 23 - + 3/40 DATA(2, -1) + -- DATA(-1, -1) - -- DATA(0, -1) + 7/40 DATA(1, -1) - 40 40 - - 11 13 - + -- DATA(-1, 0) + 9/40 DATA(-1, 1) - 3/40 DATA(2, 2) + -- DATA(1, 2) - 40 40 - - 17 - - -- DATA(0, 2) + 7/40 DATA(-1, 2) - 1/40 DATA(2, 1) + 3/4 x DATA(0, 1) - 40 - -> coeff_as_lc_of_data(%, posn_list_2d_size4); -bytes used=33023472, alloc=2096768, time=2.54 - 13 23 -[COEFF(-1, -1) = -- - 3/20 y - 1/4 x, COEFF(0, -1) = 3/4 x - -- + 3/20 y, - 40 40 - - COEFF(1, -1) = - 3/4 x + 3/20 y + 7/40, - - 11 - COEFF(2, -1) = - 3/20 y + 3/40 + 1/4 x, COEFF(-1, 0) = -- - 1/4 x - 1/20 y, - 40 - - 21 - COEFF(0, 0) = 3/4 x - -- + 1/20 y, COEFF(1, 0) = 1/20 y + 9/40 - 3/4 x, - 40 - - COEFF(2, 0) = - 1/20 y + 1/4 x + 1/40, COEFF(-1, 1) = 1/20 y - 1/4 x + 9/40, - - 19 11 - COEFF(0, 1) = 3/4 x - 1/20 y - --, COEFF(1, 1) = - 3/4 x + -- - 1/20 y, - 40 40 - - COEFF(2, 1) = 1/4 x + 1/20 y - 1/40, COEFF(-1, 2) = 7/40 - 1/4 x + 3/20 y, - - 17 13 - COEFF(0, 2) = - -- - 3/20 y + 3/4 x, COEFF(1, 2) = -- - 3/4 x - 3/20 y, - 40 40 - - COEFF(2, 2) = 3/20 y + 1/4 x - 3/40] - -> print_coeff__lc_of_data(%, "coeff_dxx_", "fp", -> "2d.coeffs/2d.cube.order3.smooth0/coeff-dxx.compute.c"); -bytes used=34023908, alloc=2096768, time=2.64 -> -# d^2/dxdy -> simplify( diff(interp_2d_cube_order3_smooth0,x,y) ); -bytes used=35024732, alloc=2096768, time=2.71 -- 3/20 x DATA(1, 2) + 3/20 x DATA(-1, 2) + 3/20 x DATA(1, -1) - - - 1/20 x DATA(-1, 0) + 1/20 x DATA(-1, 1) + 3/20 x DATA(2, 2) - - + 3/20 x DATA(0, -1) - 3/20 x DATA(0, 2) + 1/20 x DATA(2, 1) - - - 1/20 y DATA(1, 0) - 1/20 y DATA(1, 1) + 1/20 y DATA(0, 0) - - - 3/20 x DATA(-1, -1) - 1/20 x DATA(1, 1) + 3/20 y DATA(2, 2) - - + 1/20 y DATA(1, 2) - 1/20 y DATA(0, 2) - 3/20 y DATA(-1, 2) - - - 3/20 y DATA(2, 1) + 1/20 y DATA(0, 1) - 3/20 y DATA(2, 0) - - + 3/20 y DATA(2, -1) - 3/20 y DATA(-1, -1) - 1/20 y DATA(0, -1) - - + 1/20 y DATA(1, -1) + 3/20 y DATA(-1, 0) + 3/20 y DATA(-1, 1) - - + 1/20 x DATA(0, 0) + 1/20 x DATA(1, 0) - 1/20 x DATA(2, 0) - - - 3/20 x DATA(2, -1) + 3/50 DATA(1, 1) - 1/25 DATA(0, 0) - - - 1/100 DATA(1, 0) - 1/100 DATA(0, 1) + 7/100 DATA(2, 0) - - - 9/100 DATA(2, -1) + 6/25 DATA(-1, -1) - 1/50 DATA(0, -1) - - 13 13 - - --- DATA(1, -1) - 1/50 DATA(-1, 0) - --- DATA(-1, 1) - 3/50 DATA(2, 2) - 100 100 - - + 2/25 DATA(1, 2) + 7/100 DATA(0, 2) - 9/100 DATA(-1, 2) + 2/25 DATA(2, 1) - - - 1/20 x DATA(0, 1) - -> coeff_as_lc_of_data(%, posn_list_2d_size4); -[COEFF(-1, -1) = - 3/20 x + 6/25 - 3/20 y, - - COEFF(0, -1) = - 1/20 y - 1/50 + 3/20 x, - - 13 - COEFF(1, -1) = 3/20 x + 1/20 y - ---, - 100 - - COEFF(2, -1) = - 9/100 - 3/20 x + 3/20 y, - - COEFF(-1, 0) = - 1/20 x + 3/20 y - 1/50, - - COEFF(0, 0) = 1/20 x - 1/25 + 1/20 y, COEFF(1, 0) = 1/20 x - 1/100 - 1/20 y, - - COEFF(2, 0) = - 3/20 y - 1/20 x + 7/100, - - 13 - COEFF(-1, 1) = 3/20 y - --- + 1/20 x, COEFF(0, 1) = 1/20 y - 1/100 - 1/20 x, - 100 - - COEFF(1, 1) = - 1/20 y + 3/50 - 1/20 x, - - COEFF(2, 1) = 1/20 x + 2/25 - 3/20 y, - - COEFF(-1, 2) = 3/20 x - 9/100 - 3/20 y, - - COEFF(0, 2) = - 1/20 y + 7/100 - 3/20 x, - - COEFF(1, 2) = - 3/20 x + 1/20 y + 2/25, - - COEFF(2, 2) = - 3/50 + 3/20 y + 3/20 x] - -> print_coeff__lc_of_data(%, "coeff_dxy_", "fp", -> "2d.coeffs/2d.cube.order3.smooth0/coeff-dxy.compute.c"); -bytes used=36024940, alloc=2096768, time=2.77 -> -# d^2/dy^2 -> simplify( diff(interp_2d_cube_order3_smooth0,y,y) ); -1/20 x DATA(1, 2) - 3/20 x DATA(-1, 2) + 1/20 x DATA(1, -1) - - + 3/20 x DATA(-1, 0) + 3/20 x DATA(-1, 1) + 3/20 x DATA(2, 2) - - - 1/20 x DATA(0, -1) - 1/20 x DATA(0, 2) - 3/20 x DATA(2, 1) - - + 3/4 y DATA(1, 0) - 3/4 y DATA(1, 1) + 3/4 y DATA(0, 0) - - - 3/20 x DATA(-1, -1) - 1/20 x DATA(1, 1) + 1/4 y DATA(2, 2) - - + 1/4 y DATA(1, 2) + 1/4 y DATA(0, 2) + 1/4 y DATA(-1, 2) - - - 3/4 y DATA(2, 1) - 3/4 y DATA(0, 1) + 3/4 y DATA(2, 0) - - - 1/4 y DATA(2, -1) - 1/4 y DATA(-1, -1) - 1/4 y DATA(0, -1) - - - 1/4 y DATA(1, -1) + 3/4 y DATA(-1, 0) - 3/4 y DATA(-1, 1) - - + 1/20 x DATA(0, 0) - 1/20 x DATA(1, 0) - 3/20 x DATA(2, 0) - - 11 21 19 - + 3/20 x DATA(2, -1) + -- DATA(1, 1) - -- DATA(0, 0) - -- DATA(1, 0) - 40 40 40 - - 17 13 - + 9/40 DATA(0, 1) - -- DATA(2, 0) + 7/40 DATA(2, -1) + -- DATA(-1, -1) - 40 40 - - 11 23 - + -- DATA(0, -1) + 9/40 DATA(1, -1) - -- DATA(-1, 0) + 7/40 DATA(-1, 1) - 40 40 - - - 3/40 DATA(2, 2) - 1/40 DATA(1, 2) + 1/40 DATA(0, 2) + 3/40 DATA(-1, 2) - - 13 - + -- DATA(2, 1) + 1/20 x DATA(0, 1) - 40 - -> coeff_as_lc_of_data(%, posn_list_2d_size4); -bytes used=37026716, alloc=2096768, time=2.86 - 13 11 -[COEFF(-1, -1) = - 1/4 y + -- - 3/20 x, COEFF(0, -1) = -- - 1/20 x - 1/4 y, - 40 40 - - COEFF(1, -1) = - 1/4 y + 9/40 + 1/20 x, - - 23 - COEFF(2, -1) = - 1/4 y + 7/40 + 3/20 x, COEFF(-1, 0) = 3/4 y + 3/20 x - --, - 40 - - 21 19 - COEFF(0, 0) = 3/4 y + 1/20 x - --, COEFF(1, 0) = - -- - 1/20 x + 3/4 y, - 40 40 - - 17 - COEFF(2, 0) = 3/4 y - -- - 3/20 x, COEFF(-1, 1) = 3/20 x + 7/40 - 3/4 y, - 40 - - 11 - COEFF(0, 1) = 1/20 x + 9/40 - 3/4 y, COEFF(1, 1) = - 1/20 x - 3/4 y + --, - 40 - - 13 - COEFF(2, 1) = - 3/4 y + -- - 3/20 x, COEFF(-1, 2) = - 3/20 x + 3/40 + 1/4 y, - 40 - - COEFF(0, 2) = 1/40 - 1/20 x + 1/4 y, COEFF(1, 2) = 1/4 y + 1/20 x - 1/40, - - COEFF(2, 2) = 1/4 y + 3/20 x - 3/40] - -> print_coeff__lc_of_data(%, "coeff_dyy_", "fp", -> "2d.coeffs/2d.cube.order3.smooth0/coeff-dyy.compute.c"); -bytes used=38027176, alloc=2096768, time=2.96 -bytes used=39027380, alloc=2096768, time=3.07 -> -######################################## -> -# -# 2d, cube, order=4, smoothing=0 (size=5) -# -> -# interpolating polynomial -> interp_2d_cube_order4_smooth0 -> := polynomial_interpolant(fn_2d_order4, coeff_list_2d_order4, -> coord_list_2d, posn_list_2d_size5); -bytes used=40027600, alloc=2096768, time=3.13 -bytes used=41027860, alloc=2096768, time=3.17 -bytes used=42028028, alloc=2096768, time=3.24 -bytes used=43028292, alloc=2096768, time=3.30 -bytes used=44028672, alloc=2096768, time=3.36 - 99 51 -interp_2d_cube_order4_smooth0 := - ---- DATA(-2, -1) + ---- DATA(2, -2) - 1225 1225 - - 24 99 99 - - ---- DATA(1, 1) - ---- DATA(1, -2) - ---- DATA(-1, -2) - 1225 1225 1225 - - 96 51 541 246 - + ---- DATA(0, -2) + ---- DATA(-2, -2) + ---- DATA(0, 0) + ---- DATA(1, 0) - 1225 1225 1225 1225 - - 246 99 96 51 - + ---- DATA(0, 1) - ---- DATA(-2, 1) + ---- DATA(-2, 0) + ---- DATA(-2, 2) - 1225 1225 1225 1225 - - 96 99 24 - + ---- DATA(2, 0) - ---- DATA(2, -1) - ---- DATA(-1, -1) - 1225 1225 1225 - - 246 24 246 - + ---- DATA(0, -1) - ---- DATA(1, -1) + ---- DATA(-1, 0) - 1225 1225 1225 - - 24 51 99 96 - - ---- DATA(-1, 1) + ---- DATA(2, 2) - ---- DATA(1, 2) + ---- DATA(0, 2) - 1225 1225 1225 1225 - - 99 99 - - ---- DATA(-1, 2) - ---- DATA(2, 1) + (- 1/30 DATA(-2, -1) - 1225 1225 - - - 1/60 DATA(2, -2) - 1/60 DATA(1, 1) - 1/120 DATA(1, -2) - - + 1/120 DATA(-1, -2) + 1/60 DATA(-2, -2) + 1/30 DATA(-2, 1) - - - 1/60 DATA(-2, 2) + 1/30 DATA(2, -1) - 1/60 DATA(-1, -1) - - + 1/60 DATA(1, -1) + 1/60 DATA(-1, 1) + 1/60 DATA(2, 2) + 1/120 DATA(1, 2) - - 3 - - 1/120 DATA(-1, 2) - 1/30 DATA(2, 1)) x y + (1/120 DATA(-2, -1) - - - 1/60 DATA(2, -2) - 1/60 DATA(1, 1) + 1/30 DATA(1, -2) - - - 1/30 DATA(-1, -2) + 1/60 DATA(-2, -2) - 1/120 DATA(-2, 1) - - - 1/60 DATA(-2, 2) - 1/120 DATA(2, -1) - 1/60 DATA(-1, -1) - - + 1/60 DATA(1, -1) + 1/60 DATA(-1, 1) + 1/60 DATA(2, 2) - 1/30 DATA(1, 2) - - 3 - + 1/30 DATA(-1, 2) + 1/120 DATA(2, 1)) x y + (1/70 DATA(-2, -1) - - + 1/35 DATA(2, -2) - 1/140 DATA(1, 1) + 1/70 DATA(1, -2) - - - 1/70 DATA(-1, -2) - 1/35 DATA(-2, -2) - 1/70 DATA(1, 0) - - + 1/70 DATA(-2, 1) + 1/35 DATA(-2, 0) - 1/35 DATA(-2, 2) - 1/35 DATA(2, 0) - - - 1/70 DATA(2, -1) + 1/140 DATA(-1, -1) - 1/140 DATA(1, -1) - - + 1/70 DATA(-1, 0) + 1/140 DATA(-1, 1) + 1/35 DATA(2, 2) + 1/70 DATA(1, 2) - - 2 - - 1/70 DATA(-1, 2) - 1/70 DATA(2, 1)) x y + (- 1/70 DATA(-2, -1) - - - 1/35 DATA(2, -2) - 1/140 DATA(1, 1) + 1/70 DATA(1, -2) - - + 1/70 DATA(-1, -2) + 1/35 DATA(0, -2) - 1/35 DATA(-2, -2) - - - 1/70 DATA(0, 1) + 1/70 DATA(-2, 1) + 1/35 DATA(-2, 2) - 1/70 DATA(2, -1) - - + 1/140 DATA(-1, -1) + 1/70 DATA(0, -1) + 1/140 DATA(1, -1) - - - 1/140 DATA(-1, 1) + 1/35 DATA(2, 2) - 1/70 DATA(1, 2) - 1/35 DATA(0, 2) - - 2 - - 1/70 DATA(-1, 2) + 1/70 DATA(2, 1)) x y + (- 1/98 DATA(-2, -1) - - + 1/49 DATA(2, -2) + 1/196 DATA(1, 1) - 1/98 DATA(1, -2) - - - 1/98 DATA(-1, -2) - 1/49 DATA(0, -2) + 1/49 DATA(-2, -2) - - + 1/49 DATA(0, 0) + 1/98 DATA(1, 0) + 1/98 DATA(0, 1) - 1/98 DATA(-2, 1) - - - 1/49 DATA(-2, 0) + 1/49 DATA(-2, 2) - 1/49 DATA(2, 0) - 1/98 DATA(2, -1) - - + 1/196 DATA(-1, -1) + 1/98 DATA(0, -1) + 1/196 DATA(1, -1) - - + 1/98 DATA(-1, 0) + 1/196 DATA(-1, 1) + 1/49 DATA(2, 2) - 1/98 DATA(1, 2) - - 2 2 / - - 1/49 DATA(0, 2) - 1/98 DATA(-1, 2) - 1/98 DATA(2, 1)) x y + | - \ - - 21 11 37 21 - --- DATA(-2, -1) + --- DATA(2, -2) + --- DATA(1, 1) - --- DATA(1, -2) - 200 150 300 200 - - 21 11 21 37 - + --- DATA(-1, -2) - --- DATA(-2, -2) - --- DATA(-2, 1) - --- DATA(1, -1) - 200 150 200 300 - - 11 21 37 21 - + --- DATA(-2, 2) - --- DATA(2, -1) + --- DATA(-1, -1) - --- DATA(-1, 2) - 150 200 300 200 - - 37 11 21 21 \ - - --- DATA(-1, 1) - --- DATA(2, 2) + --- DATA(1, 2) + --- DATA(2, 1)| x y - 300 150 200 200 / - - / 11 31 31 - + |- --- DATA(-2, -1) + --- DATA(2, -2) + --- DATA(1, 1) - \ 105 420 210 - - 17 - - 1/84 DATA(1, -2) - 1/84 DATA(-1, -2) - --- DATA(0, -2) - 420 - - 31 17 11 31 - + --- DATA(-2, -2) + --- DATA(0, 1) + --- DATA(-2, 1) - --- DATA(-2, 2) - 420 105 105 420 - - 11 31 17 31 - - --- DATA(2, -1) - --- DATA(-1, -1) - --- DATA(0, -1) - --- DATA(1, -1) - 105 210 105 210 - - 31 31 17 - + --- DATA(-1, 1) - --- DATA(2, 2) + 1/84 DATA(1, 2) + --- DATA(0, 2) - 210 420 420 - - 11 \ / - + 1/84 DATA(-1, 2) + --- DATA(2, 1)| y + |- 1/84 DATA(-2, -1) - 105 / \ - - 31 31 11 11 - - --- DATA(2, -2) + --- DATA(1, 1) + --- DATA(1, -2) - --- DATA(-1, -2) - 420 210 105 105 - - 31 17 17 - + --- DATA(-2, -2) + --- DATA(1, 0) - 1/84 DATA(-2, 1) - --- DATA(-2, 0) - 420 105 420 - - 31 17 31 - + --- DATA(-2, 2) + --- DATA(2, 0) + 1/84 DATA(2, -1) - --- DATA(-1, -1) - 420 420 210 - - 31 17 31 31 - + --- DATA(1, -1) - --- DATA(-1, 0) - --- DATA(-1, 1) - --- DATA(2, 2) - 210 105 210 420 - - 11 11 \ / - + --- DATA(1, 2) - --- DATA(-1, 2) + 1/84 DATA(2, 1)| x + | - 105 105 / \ - - 71 289 181 113 - ---- DATA(-2, -1) - ---- DATA(2, -2) + ---- DATA(1, 1) + --- DATA(1, -2) - 5880 5880 1470 735 - - 113 41 289 57 - + --- DATA(-1, -2) - --- DATA(0, -2) - ---- DATA(-2, -2) - --- DATA(0, 0) - 735 196 5880 196 - - 83 53 71 191 - + --- DATA(1, 0) - --- DATA(0, 1) + ---- DATA(-2, 1) + ---- DATA(-2, 0) - 735 196 5880 5880 - - 289 191 71 - - ---- DATA(-2, 2) + ---- DATA(2, 0) + ---- DATA(2, -1) - 5880 5880 5880 - - 181 53 181 83 - + ---- DATA(-1, -1) - --- DATA(0, -1) + ---- DATA(1, -1) + --- DATA(-1, 0) - 1470 196 1470 735 - - 181 289 113 41 - + ---- DATA(-1, 1) - ---- DATA(2, 2) + --- DATA(1, 2) - --- DATA(0, 2) - 1470 5880 735 196 - - 113 71 \ 2 - + --- DATA(-1, 2) + ---- DATA(2, 1)| x + (- 1/60 DATA(-2, -1) - 735 5880 / - - + 1/60 DATA(2, -2) - 1/30 DATA(1, 1) - 1/30 DATA(1, -2) - - + 1/30 DATA(-1, -2) - 1/60 DATA(-2, -2) - 1/30 DATA(1, 0) - - - 1/60 DATA(-2, 1) - 1/60 DATA(-2, 0) - 1/60 DATA(-2, 2) + 1/60 DATA(2, 0) - - + 1/60 DATA(2, -1) + 1/30 DATA(-1, -1) - 1/30 DATA(1, -1) - - + 1/30 DATA(-1, 0) + 1/30 DATA(-1, 1) + 1/60 DATA(2, 2) - 1/30 DATA(1, 2) - - 3 - + 1/30 DATA(-1, 2) + 1/60 DATA(2, 1)) x + (1/120 DATA(-2, -1) - - + 1/120 DATA(2, -2) - 1/30 DATA(1, 1) - 1/30 DATA(1, -2) - - - 1/30 DATA(-1, -2) + 1/20 DATA(0, -2) + 1/120 DATA(-2, -2) - - + 1/20 DATA(0, 0) - 1/30 DATA(1, 0) + 1/20 DATA(0, 1) + 1/120 DATA(-2, 1) - - + 1/120 DATA(-2, 0) + 1/120 DATA(-2, 2) + 1/120 DATA(2, 0) - - + 1/120 DATA(2, -1) - 1/30 DATA(-1, -1) + 1/20 DATA(0, -1) - - - 1/30 DATA(1, -1) - 1/30 DATA(-1, 0) - 1/30 DATA(-1, 1) - - + 1/120 DATA(2, 2) - 1/30 DATA(1, 2) + 1/20 DATA(0, 2) - 1/30 DATA(-1, 2) - - 4 - + 1/120 DATA(2, 1)) x + (- 1/30 DATA(-2, -1) + 1/120 DATA(2, -2) - - - 1/30 DATA(1, 1) + 1/120 DATA(1, -2) + 1/120 DATA(-1, -2) - - + 1/120 DATA(0, -2) + 1/120 DATA(-2, -2) + 1/20 DATA(0, 0) - - + 1/20 DATA(1, 0) - 1/30 DATA(0, 1) - 1/30 DATA(-2, 1) + 1/20 DATA(-2, 0) - - + 1/120 DATA(-2, 2) + 1/20 DATA(2, 0) - 1/30 DATA(2, -1) - - - 1/30 DATA(-1, -1) - 1/30 DATA(0, -1) - 1/30 DATA(1, -1) - - + 1/20 DATA(-1, 0) - 1/30 DATA(-1, 1) + 1/120 DATA(2, 2) - - + 1/120 DATA(1, 2) + 1/120 DATA(0, 2) + 1/120 DATA(-1, 2) - - 4 - - 1/30 DATA(2, 1)) y + (1/30 DATA(-2, -1) - 1/60 DATA(2, -2) - - - 1/30 DATA(1, 1) - 1/60 DATA(1, -2) - 1/60 DATA(-1, -2) - - - 1/60 DATA(0, -2) - 1/60 DATA(-2, -2) - 1/30 DATA(0, 1) - - - 1/30 DATA(-2, 1) + 1/60 DATA(-2, 2) + 1/30 DATA(2, -1) - - + 1/30 DATA(-1, -1) + 1/30 DATA(0, -1) + 1/30 DATA(1, -1) - - - 1/30 DATA(-1, 1) + 1/60 DATA(2, 2) + 1/60 DATA(1, 2) + 1/60 DATA(0, 2) - - 3 /113 - + 1/60 DATA(-1, 2) - 1/30 DATA(2, 1)) y + |--- DATA(-2, -1) - \735 - - 289 181 71 - - ---- DATA(2, -2) + ---- DATA(1, 1) + ---- DATA(1, -2) - 5880 1470 5880 - - 71 191 289 - + ---- DATA(-1, -2) + ---- DATA(0, -2) - ---- DATA(-2, -2) - 5880 5880 5880 - - 57 53 83 113 - - --- DATA(0, 0) - --- DATA(1, 0) + --- DATA(0, 1) + --- DATA(-2, 1) - 196 196 735 735 - - 41 289 41 113 - - --- DATA(-2, 0) - ---- DATA(-2, 2) - --- DATA(2, 0) + --- DATA(2, -1) - 196 5880 196 735 - - 181 83 181 53 - + ---- DATA(-1, -1) + --- DATA(0, -1) + ---- DATA(1, -1) - --- DATA(-1, 0) - 1470 735 1470 196 - - 181 289 71 191 - + ---- DATA(-1, 1) - ---- DATA(2, 2) + ---- DATA(1, 2) + ---- DATA(0, 2) - 1470 5880 5880 5880 - - 71 113 \ 2 - + ---- DATA(-1, 2) + --- DATA(2, 1)| y - 5880 735 / - -> -# I -> coeff_as_lc_of_data(%, posn_list_2d_size5); -bytes used=45044616, alloc=2096768, time=3.41 -bytes used=46046320, alloc=2096768, time=3.48 - 11 4 31 3 289 2 289 2 -[COEFF(-2, -2) = - --- x y + 1/120 y + --- x - 1/60 y - ---- x - ---- y - 150 420 5880 5880 - - 3 51 2 2 31 2 2 3 - - 1/60 x + ---- - 1/35 x y - 1/35 x y + --- y + 1/49 x y + 1/60 x y - 1225 420 - - 4 3 3 99 2 - + 1/120 x + 1/60 x y, COEFF(-1, -2) = - 1/30 x y - ---- - 1/70 x y - 1225 - - 3 11 21 113 2 4 3 4 - + 1/30 x - --- x + --- x y + --- x + 1/120 y - 1/60 y - 1/30 x - 105 200 735 - - 71 2 2 3 2 2 - + ---- y - 1/84 y + 1/70 x y + 1/120 x y - 1/98 x y , COEFF(0, -2) = - 5880 - - 41 2 191 2 3 2 2 17 4 2 - - --- x + ---- y - 1/60 y - 1/49 x y - --- y + 1/20 x + 1/35 x y - 196 5880 420 - - 4 96 21 2 3 - + 1/120 y + ----, COEFF(1, -2) = - --- x y + 1/70 x y - 1/60 y - 1225 200 - - 3 2 2 4 99 4 3 - - 1/120 x y - 1/84 y - 1/98 x y - 1/30 x - ---- + 1/120 y - 1/30 x - 1225 - - 2 3 71 2 11 113 2 11 - + 1/70 x y + 1/30 x y + ---- y + --- x + --- x , COEFF(2, -2) = --- x y - 5880 105 735 150 - - 3 4 31 31 3 2 2 - - 1/60 y + 1/120 x - --- x + --- y + 1/60 x + 1/35 x y - 1/35 x y - 420 420 - - 289 2 3 4 289 2 2 2 51 3 - - ---- y - 1/60 x y + 1/120 y - ---- x + 1/49 x y + ---- - 1/60 x y - 5880 5880 1225 - - 2 3 2 2 4 - , COEFF(-2, -1) = - 1/70 x y + 1/120 x y - 1/98 x y + 1/120 x - - 3 11 21 113 2 3 71 2 - + 1/30 y - --- y + --- x y - 1/84 x + --- y - 1/30 x y + ---- x - 105 200 735 5880 - - 3 99 4 2 4 - - 1/60 x - ---- - 1/30 y + 1/70 x y , COEFF(-1, -1) = - 1/30 y - 1225 - - 2 2 4 3 37 3 2 - + 1/196 x y - 1/30 x - 1/60 x y + --- x y - 1/60 x y + 1/140 x y - 300 - - 24 31 31 181 2 3 181 2 3 - - ---- - --- y - --- x + ---- x + 1/30 x + ---- y + 1/30 y - 1225 210 210 1470 1470 - - 2 2 4 83 2 3 - + 1/140 x y, COEFF(0, -1) = 1/70 x y + 1/20 x + --- y + 1/30 y - 735 - - 17 4 53 2 246 2 2 3 - - --- y - 1/30 y - --- x + ---- + 1/98 x y , COEFF(1, -1) = 1/60 x y - 105 196 1225 - - 3 2 3 31 181 2 24 4 - + 1/60 x y + 1/140 x y + 1/30 y + --- x + ---- y - ---- - 1/30 y - 210 1470 1225 - - 2 2 37 31 2 4 3 181 2 - + 1/196 x y - --- x y - --- y - 1/140 x y - 1/30 x - 1/30 x + ---- x - 300 210 1470 - - 2 3 99 3 3 - , COEFF(2, -1) = - 1/70 x y + 1/30 x y - ---- + 1/30 y + 1/60 x - 1225 - - 71 2 4 3 4 21 11 2 2 - + ---- x + 1/120 x - 1/120 x y - 1/30 y - --- x y - --- y - 1/98 x y - 5880 200 105 - - 113 2 2 2 2 3 - + 1/84 x + --- y - 1/70 x y , COEFF(-2, 0) = - 1/49 x y - 1/60 x - 735 - - 2 96 4 4 17 191 2 41 2 - + 1/35 x y + ---- + 1/120 x + 1/20 y - --- x + ---- x - --- y , - 1225 420 5880 196 - - 2 17 2 2 4 3 246 - COEFF(-1, 0) = 1/70 x y - --- x + 1/98 x y - 1/30 x + 1/30 x + ---- - 105 1225 - - 83 2 4 53 2 - + --- x + 1/20 y - --- y , - 735 196 - - 57 2 57 2 4 2 2 541 4 - COEFF(0, 0) = - --- x - --- y + 1/20 x + 1/49 x y + ---- + 1/20 y , - 196 196 1225 - - 3 2 4 4 53 2 246 - COEFF(1, 0) = - 1/30 x - 1/70 x y + 1/20 y - 1/30 x - --- y + ---- - 196 1225 - - 83 2 17 2 2 96 2 2 2 - + --- x + --- x + 1/98 x y , COEFF(2, 0) = ---- - 1/49 x y - 1/35 x y - 735 105 1225 - - 4 4 17 41 2 3 191 2 - + 1/120 x + 1/20 y + --- x - --- y + 1/60 x + ---- x , COEFF(-2, 1) = - 420 196 5880 - - 4 99 2 21 2 3 3 - - 1/30 y - ---- + 1/70 x y - --- x y + 1/70 x y - 1/120 x y - 1/30 y - 1225 200 - - 3 11 113 2 3 2 2 71 2 - + 1/30 x y + --- y + --- y - 1/84 x - 1/60 x - 1/98 x y + ---- x - 105 735 5880 - - 4 31 181 2 3 181 2 - + 1/120 x , COEFF(-1, 1) = - --- x + ---- y + 1/60 x y + ---- x - 210 1470 1470 - - 3 3 2 24 31 3 37 - + 1/30 x - 1/30 y - 1/140 x y - ---- + --- y + 1/60 x y - --- x y - 1225 210 300 - - 4 2 2 2 4 3 - - 1/30 y + 1/140 x y + 1/196 x y - 1/30 x , COEFF(0, 1) = - 1/30 y - - 53 2 4 83 2 2 246 17 4 - - --- x - 1/30 y + --- y - 1/70 x y + ---- + --- y + 1/20 x - 196 735 1225 105 - - 2 2 4 3 3 2 - + 1/98 x y , COEFF(1, 1) = - 1/30 x - 1/60 x y - 1/60 x y - 1/140 x y - - 24 2 31 3 4 2 2 31 - - ---- - 1/140 x y + --- x - 1/30 x - 1/30 y + 1/196 x y + --- y - 1225 210 210 - - 181 2 37 3 181 2 2 2 - + ---- x + --- x y - 1/30 y + ---- y , COEFF(2, 1) = - 1/98 x y - 1470 300 1470 - - 71 2 2 2 3 3 3 - + ---- x - 1/70 x y + 1/70 x y + 1/120 x y - 1/30 y + 1/60 x - 5880 - - 113 2 11 3 4 21 99 4 - + --- y + --- y - 1/30 x y - 1/30 y + --- x y - ---- + 1/120 x - 735 105 200 1225 - - 289 2 3 2 3 - + 1/84 x, COEFF(-2, 2) = - ---- x - 1/60 x y - 1/35 x y - 1/60 x - 5880 - - 2 2 2 51 3 289 2 31 31 - + 1/49 x y + 1/35 x y + ---- - 1/60 x y - ---- y + --- x - --- y - 1225 5880 420 420 - - 11 3 4 4 99 113 2 - + --- x y + 1/60 y + 1/120 x + 1/120 y , COEFF(-1, 2) = - ---- + --- x - 150 1225 735 - - 3 4 71 2 2 2 11 3 - + 1/84 y - 1/120 x y + 1/120 y + ---- y - 1/98 x y - --- x + 1/30 x - 5880 105 - - 2 2 3 3 21 4 - - 1/70 x y - 1/70 x y + 1/30 x y + 1/60 y - --- x y - 1/30 x , - 200 - - 4 41 2 2 2 191 2 3 96 - COEFF(0, 2) = 1/20 x - --- x - 1/49 x y + ---- y + 1/60 y + ---- - 196 5880 1225 - - 17 2 4 4 11 - + --- y - 1/35 x y + 1/120 y , COEFF(1, 2) = - 1/30 x + --- x - 420 105 - - 3 2 2 113 2 71 2 3 3 - - 1/30 x y - 1/98 x y + --- x + ---- y + 1/120 x y + 1/60 y - 735 5880 - - 21 2 4 3 2 99 - + --- x y + 1/70 x y + 1/120 y - 1/30 x + 1/84 y - 1/70 x y - ----, - 200 1225 - - 31 51 4 31 3 2 2 - COEFF(2, 2) = - --- y + ---- + 1/120 x - --- x + 1/60 x y + 1/49 x y - 420 1225 420 - - 289 2 289 2 3 3 11 2 4 - - ---- x - ---- y + 1/60 x y + 1/60 y - --- x y + 1/35 x y + 1/120 y - 5880 5880 150 - - 3 2 - + 1/60 x + 1/35 x y] - -> print_coeff__lc_of_data(%, "coeff_I_", "fp", -> "2d.coeffs/2d.cube.order4.smooth0/coeff-I.compute.c"); -bytes used=47046476, alloc=2424388, time=3.54 -bytes used=48046676, alloc=2424388, time=3.61 -bytes used=49050356, alloc=2424388, time=3.68 -bytes used=50065748, alloc=2424388, time=3.75 -bytes used=51069308, alloc=2424388, time=3.84 -bytes used=52069472, alloc=2424388, time=3.97 -bytes used=53069648, alloc=2424388, time=4.03 -bytes used=54069840, alloc=2424388, time=4.11 -bytes used=55069992, alloc=2424388, time=4.20 -bytes used=56070208, alloc=2424388, time=4.36 -bytes used=57070372, alloc=2424388, time=4.43 -bytes used=58075880, alloc=2424388, time=4.52 -bytes used=59079984, alloc=2424388, time=4.65 -bytes used=60080404, alloc=2424388, time=4.76 -bytes used=61080652, alloc=2424388, time=4.84 -bytes used=62080996, alloc=2424388, time=4.99 -bytes used=63081168, alloc=2424388, time=5.05 -bytes used=64081376, alloc=2424388, time=5.19 -bytes used=65081756, alloc=2424388, time=5.27 -bytes used=66081940, alloc=2424388, time=5.40 -bytes used=67082096, alloc=2424388, time=5.55 -> -# d/dx -> simplify( diff(interp_2d_cube_order4_smooth0,x) ); -bytes used=68082968, alloc=2424388, time=5.64 -bytes used=69083592, alloc=2424388, time=5.70 -bytes used=70083900, alloc=2424388, time=5.77 -2/35 x y DATA(-2, 2) - 1/35 x y DATA(2, -1) + 1/70 x y DATA(-1, -1) - - + 1/35 x y DATA(0, -1) + 1/70 x y DATA(1, -1) - 1/70 x y DATA(-1, 1) - - 2 2 2 - - 1/49 x y DATA(2, 1) + 1/49 x y DATA(1, 0) - 2/49 x y DATA(-2, 0) - - 2 2 - + 1/98 x y DATA(1, -1) + 2/49 x y DATA(2, 2) - 1/84 DATA(-2, -1) - - 2 2 2 - - 1/49 x y DATA(1, 2) + 1/98 x y DATA(-1, 1) - 1/49 x y DATA(2, -1) - - 2 2 31 - + 1/98 x y DATA(-1, -1) - 1/49 x y DATA(1, -2) - --- DATA(2, -2) - 420 - - 2 2 2 - - 1/49 x y DATA(-1, -2) + 2/49 x y DATA(-2, -2) - 1/49 x y DATA(-2, 1) - - 2 2 31 - + 2/49 x y DATA(-2, 2) - 1/49 x y DATA(-2, -1) + --- DATA(1, 1) - 210 - - 2 11 11 - + 2/49 x y DATA(2, -2) + --- DATA(1, -2) - --- DATA(-1, -2) - 105 105 - - 2 2 2 - + 1/98 x y DATA(1, 1) + 1/49 x y DATA(0, -1) - 2/49 x y DATA(0, 2) - - 2 2 31 - - 1/40 x y DATA(-2, 1) - 1/20 x y DATA(-2, 2) + --- DATA(-2, -2) - 420 - - 2 2 2 - - 1/40 x y DATA(2, -1) - 1/20 x y DATA(-1, -1) + 1/20 x y DATA(1, -1) - - 2 17 2 - + 1/20 x y DATA(-1, 1) + --- DATA(1, 0) + 1/20 x y DATA(2, 2) - 105 - - 2 2 2 - - 1/10 x y DATA(1, 2) + 1/10 x y DATA(-1, 2) + 1/40 x y DATA(2, 1) - - 2 2 - + 1/35 x y DATA(2, 1) - 2/49 x y DATA(2, 0) - 2/49 x y DATA(0, -2) - - 2 - + 1/70 y DATA(-2, -1) - 2/35 x y DATA(0, 2) - 1/35 x y DATA(1, 2) - - 17 - + 2/35 x y DATA(2, 2) - 1/84 DATA(-2, 1) - --- DATA(-2, 0) - 420 - - + 1/35 x y DATA(-1, -2) - 2/35 x y DATA(-2, -2) + 2/35 x y DATA(0, -2) - - 2 2 - - 1/35 x y DATA(-2, -1) + 2/49 x y DATA(0, 0) + 1/49 x y DATA(0, 1) - - 2 2 3 - + 1/49 x y DATA(-1, 0) - 1/49 x y DATA(-1, 2) - 2/15 x DATA(1, 1) - - 3 3 - + 1/5 x DATA(0, -1) + 1/30 x DATA(2, -2) - 1/70 x y DATA(1, 1) - - 3 2 3 - + 1/5 x DATA(0, 2) - 1/10 x DATA(1, 1) + 1/30 x DATA(-2, -1) - - 2 2 2 - + 1/20 x DATA(2, -2) - 1/10 x DATA(1, -2) - 1/20 x DATA(-2, -2) - - 2 2 - - 1/10 x DATA(1, 0) + 1/10 x DATA(-1, -2) + 1/35 x y DATA(1, -2) - - 2 2 2 - - 1/20 x DATA(-2, 1) - 1/20 x DATA(-2, 0) - 1/20 x DATA(-2, 2) - - 2 2 2 - + 1/20 x DATA(2, 0) + 1/20 x DATA(2, -1) - 1/10 x DATA(1, -1) - - 2 2 2 - + 1/10 x DATA(-1, 0) + 1/10 x DATA(-1, -1) + 1/10 x DATA(-1, 2) - - 2 2 11 - + 1/20 x DATA(2, 2) - 1/10 x y DATA(-1, -2) + --- y DATA(2, -2) - 150 - - 2 2 2 - + 1/10 x DATA(-1, 1) - 1/10 x DATA(1, 2) + 1/20 x DATA(2, 1) - - 21 2 11 - + --- y DATA(-2, -1) + 1/20 x y DATA(-2, -2) + --- y DATA(-2, 2) - 200 150 - - 37 21 21 - + --- y DATA(1, 1) - --- y DATA(1, -2) + --- y DATA(-1, -2) - 300 200 200 - - 11 21 37 - - --- y DATA(-2, -2) - --- y DATA(-2, 1) - --- y DATA(1, -1) - 150 200 300 - - 21 21 37 - + --- y DATA(1, 2) - --- y DATA(2, -1) + --- y DATA(-1, -1) - 200 200 300 - - 21 21 37 - + --- y DATA(2, 1) - --- y DATA(-1, 2) - --- y DATA(-1, 1) - 200 200 300 - - 11 2 2 - - --- y DATA(2, 2) - 1/35 y DATA(-2, -2) - 1/70 y DATA(1, 0) - 150 - - 2 2 2 - + 1/35 y DATA(2, -2) - 1/140 y DATA(1, 1) + 1/40 x y DATA(-2, -1) - - 2 2 2 - + 1/35 y DATA(-2, 0) + 1/70 y DATA(1, -2) - 1/70 y DATA(-1, -2) - - 2 2 2 - - 1/35 y DATA(-2, 2) - 1/140 y DATA(1, -1) - 1/70 y DATA(2, -1) - - 2 2 2 - + 1/70 y DATA(-2, 1) + 1/70 y DATA(1, 2) - 1/35 y DATA(2, 0) - - 2 2 2 - + 1/140 y DATA(-1, -1) + 1/140 y DATA(-1, 1) + 1/70 y DATA(-1, 0) - - 2 2 53 - + 1/35 y DATA(2, 2) - 1/20 x y DATA(2, -2) - -- x DATA(0, 1) - 98 - - 2 2 181 - - 1/70 y DATA(-1, 2) - 1/70 y DATA(2, 1) + --- x DATA(1, -1) - 735 - - 57 166 226 - - -- x DATA(0, 0) + --- x DATA(-1, 0) + --- x DATA(-1, 2) - 98 735 735 - - 166 71 191 - + --- x DATA(1, 0) + ---- x DATA(2, 1) + ---- x DATA(-2, 0) - 735 2940 2940 - - 2 226 289 - - 1/20 x y DATA(1, 1) + --- x DATA(1, -2) - ---- x DATA(2, 2) - 735 2940 - - 226 181 71 - + --- x DATA(1, 2) + --- x DATA(-1, 1) + ---- x DATA(2, -1) - 735 735 2940 - - 181 226 289 - + --- x DATA(-1, -1) + --- x DATA(-1, -2) - ---- x DATA(-2, -2) - 735 735 2940 - - 71 289 2 - + ---- x DATA(-2, 1) - ---- x DATA(-2, 2) + 1/10 x y DATA(1, -2) - 2940 2940 - - 289 181 53 - - ---- x DATA(2, -2) + --- x DATA(1, 1) - -- x DATA(0, -1) - 2940 735 98 - - 41 3 - - -- x DATA(0, 2) + 1/35 x y DATA(-2, 1) - 1/60 y DATA(2, -2) - 98 - - 3 71 3 - - 1/30 y DATA(-2, -1) + ---- x DATA(-2, -1) - 1/60 y DATA(1, 1) - 2940 - - 3 3 3 - - 1/60 y DATA(-2, 2) - 1/120 y DATA(1, -2) + 1/120 y DATA(-1, -2) - - 3 3 - + 1/60 y DATA(-2, -2) - 2/35 x y DATA(2, -2) + 1/120 y DATA(1, 2) - - 3 3 3 - + 1/30 y DATA(-2, 1) + 1/30 y DATA(2, -1) - 1/60 y DATA(-1, -1) - - 3 3 - - 1/35 x y DATA(0, 1) - 1/30 y DATA(2, 1) + 1/60 y DATA(-1, 1) - - 3 3 3 - + 1/60 y DATA(2, 2) + 1/60 y DATA(1, -1) - 2/15 x DATA(-1, 2) - - 3 3 3 - - 2/15 x DATA(-1, 0) - 1/120 y DATA(-1, 2) + 1/30 x DATA(2, 1) - - 3 3 3 - + 1/30 x DATA(-2, 0) - 2/15 x DATA(1, -1) + 1/5 x DATA(0, 1) - - 3 3 3 - + 1/30 x DATA(2, 2) - 2/15 x DATA(-1, 1) - 2/15 x DATA(1, 0) - - 3 3 3 - - 2/15 x DATA(1, 2) + 1/30 x DATA(-2, 2) - 2/15 x DATA(-1, -1) - - 3 3 2 - - 2/15 x DATA(1, -2) + 1/30 x DATA(2, -1) - 1/20 x DATA(-2, -1) - - 3 3 3 - - 2/15 x DATA(-1, -2) + 1/30 x DATA(-2, -2) + 1/30 x DATA(-2, 1) - - 191 41 - - 1/35 x y DATA(-1, 2) + ---- x DATA(2, 0) - -- x DATA(0, -2) - 2940 98 - - 3 31 3 - + 1/30 x DATA(2, 0) + --- DATA(-2, 2) + 1/5 x DATA(0, -2) - 420 - - 3 17 31 - + 1/5 x DATA(0, 0) + --- DATA(2, 0) + 1/84 DATA(2, -1) - --- DATA(-1, -1) - 420 210 - - 31 17 31 31 - + --- DATA(1, -1) - --- DATA(-1, 0) - --- DATA(-1, 1) - --- DATA(2, 2) - 210 105 210 420 - - 11 11 - + --- DATA(1, 2) - --- DATA(-1, 2) + 1/84 DATA(2, 1) - 105 105 - -> coeff_as_lc_of_data(%, posn_list_2d_size5); -bytes used=71084340, alloc=2424388, time=5.83 -bytes used=72087652, alloc=2424388, time=5.89 - 289 3 2 2 31 2 -[COEFF(-2, -2) = - ---- x + 1/30 x + 1/20 x y + 2/49 x y + --- - 1/20 x - 2940 420 - - 2 11 3 - - 1/35 y - --- y - 2/35 x y + 1/60 y , COEFF(-1, -2) = 1/35 x y - 150 - - 3 2 3 226 11 2 2 - + 1/120 y + 1/10 x - 2/15 x + --- x - --- - 1/10 x y - 1/70 y - 735 105 - - 2 21 41 2 3 - - 1/49 x y + --- y, COEFF(0, -2) = - -- x - 2/49 x y + 1/5 x + 2/35 x y, - 200 98 - - 21 226 3 3 2 2 - COEFF(1, -2) = - --- y + --- x - 1/120 y - 2/15 x + 1/10 x y - 1/49 x y - 200 735 - - 2 2 11 2 2 - - 1/10 x + 1/70 y + 1/35 x y + ---, COEFF(2, -2) = 1/20 x + 2/49 x y - 105 - - 11 289 31 3 2 3 - + --- y - 2/35 x y - ---- x - --- - 1/60 y + 1/35 y + 1/30 x - 150 2940 420 - - 2 2 21 3 71 - - 1/20 x y, COEFF(-2, -1) = 1/70 y - 1/84 + --- y + 1/30 x + ---- x - 200 2940 - - 2 2 2 3 - - 1/20 x - 1/49 x y - 1/35 x y + 1/40 x y - 1/30 y , COEFF(-1, -1) = - - 31 2 3 2 37 2 2 - - --- + 1/98 x y - 1/60 y + 1/10 x + --- y + 1/140 y - 1/20 x y - 210 300 - - 3 181 - + 1/70 x y - 2/15 x + --- x, - 735 - - 53 3 2 181 - COEFF(0, -1) = - -- x + 1/5 x + 1/49 x y + 1/35 x y, COEFF(1, -1) = --- x - 98 735 - - 2 3 2 2 31 2 - - 1/10 x + 1/60 y + 1/98 x y + 1/20 x y + --- - 1/140 y + 1/70 x y - 210 - - 3 37 71 3 - - 2/15 x - --- y, COEFF(2, -1) = - 1/35 x y + ---- x + 1/30 x - 300 2940 - - 2 3 2 21 2 2 - - 1/49 x y + 1/30 y - 1/70 y - --- y + 1/20 x - 1/40 x y + 1/84, - 200 - - 3 2 2 17 191 2 - COEFF(-2, 0) = 1/30 x - 1/20 x + 1/35 y - --- + ---- x - 2/49 x y , - 420 2940 - - 3 2 17 2 2 166 - COEFF(-1, 0) = - 2/15 x + 1/70 y - --- + 1/49 x y + 1/10 x + --- x, - 105 735 - - 2 57 3 - COEFF(0, 0) = 2/49 x y - -- x + 1/5 x , - 98 - - 166 2 2 2 17 3 - COEFF(1, 0) = --- x + 1/49 x y - 1/70 y - 1/10 x + --- - 2/15 x , - 735 105 - - 2 191 2 17 2 3 - COEFF(2, 0) = - 2/49 x y + ---- x - 1/35 y + --- + 1/20 x + 1/30 x , - 2940 420 - - 21 2 2 2 - COEFF(-2, 1) = - --- y - 1/84 - 1/40 x y - 1/49 x y + 1/35 x y - 1/20 x - 200 - - 3 71 2 3 31 2 - + 1/30 x + ---- x + 1/70 y + 1/30 y , COEFF(-1, 1) = - --- + 1/20 x y - 2940 210 - - 3 181 2 3 2 37 - - 2/15 x + --- x + 1/10 x - 1/70 x y + 1/60 y + 1/140 y - --- y - 735 300 - - 2 3 53 2 - + 1/98 x y , COEFF(0, 1) = 1/5 x - -- x - 1/35 x y + 1/49 x y , - 98 - - 181 3 2 31 3 2 37 - COEFF(1, 1) = --- x - 1/60 y - 1/140 y + --- - 2/15 x - 1/10 x + --- y - 735 210 300 - - 2 2 21 3 71 - - 1/70 x y + 1/98 x y - 1/20 x y, COEFF(2, 1) = --- y + 1/30 x + ---- x - 200 2940 - - 2 2 2 2 3 - + 1/20 x + 1/84 + 1/35 x y - 1/70 y + 1/40 x y - 1/49 x y - 1/30 y , - - 2 2 2 3 - COEFF(-2, 2) = - 1/20 x y + 2/35 x y - 1/20 x + 2/49 x y + 1/30 x - - 3 31 11 289 2 3 - - 1/60 y + --- + --- y - ---- x - 1/35 y , COEFF(-1, 2) = - 1/120 y - 420 150 2940 - - 11 226 3 2 2 2 - - --- + --- x - 2/15 x + 1/10 x y - 1/35 x y + 1/10 x - 1/49 x y - 105 735 - - 2 21 3 2 41 - - 1/70 y - --- y, COEFF(0, 2) = 1/5 x - 2/35 x y - 2/49 x y - -- x, - 200 98 - - 2 2 2 11 3 - COEFF(1, 2) = - 1/10 x - 1/35 x y - 1/49 x y - 1/10 x y + --- + 1/120 y - 105 - - 3 2 226 21 31 2 - - 2/15 x + 1/70 y + --- x + --- y, COEFF(2, 2) = - --- + 1/35 y - 735 200 420 - - 3 2 2 11 2 3 - + 1/30 x + 1/20 x + 2/35 x y + 1/20 x y - --- y + 2/49 x y + 1/60 y - 150 - - 289 - - ---- x] - 2940 - -> print_coeff__lc_of_data(%, "coeff_dx_", "fp", -> "2d.coeffs/2d.cube.order4.smooth0/coeff-dx.compute.c"); -bytes used=73087808, alloc=2424388, time=5.97 -bytes used=74088016, alloc=2424388, time=6.05 -bytes used=75088196, alloc=2424388, time=6.17 -bytes used=76088388, alloc=2424388, time=6.26 -bytes used=77088736, alloc=2424388, time=6.33 -bytes used=78089036, alloc=2424388, time=6.47 -bytes used=79089360, alloc=2424388, time=6.55 -bytes used=80089520, alloc=2424388, time=6.70 -bytes used=81089924, alloc=2424388, time=6.78 -bytes used=82090168, alloc=2424388, time=6.96 -> -# d/dy -> simplify( diff(interp_2d_cube_order4_smooth0,y) ); -bytes used=83090356, alloc=2424388, time=7.05 -bytes used=84090512, alloc=2424388, time=7.11 -- 2/35 x y DATA(-2, 2) - 1/35 x y DATA(2, -1) + 1/70 x y DATA(-1, -1) - - 2 - - 1/70 x y DATA(1, -1) + 1/70 x y DATA(-1, 1) - 1/10 x y DATA(2, 1) - - 2 2 11 - + 1/20 x y DATA(1, -1) + 1/20 x y DATA(2, 2) - --- DATA(-2, -1) - 105 - - 2 2 2 - + 1/40 x y DATA(1, 2) + 1/20 x y DATA(-1, 1) + 1/10 x y DATA(2, -1) - - 2 2 2 - - 1/70 x DATA(0, 1) - 1/35 x DATA(0, 2) + 1/70 x DATA(0, -1) - - 2 2 31 - - 1/20 x y DATA(-1, -1) - 1/40 x y DATA(1, -2) + --- DATA(2, -2) - 420 - - 2 2 3 - + 1/40 x y DATA(-1, -2) + 1/20 x y DATA(-2, -2) + 1/30 y DATA(0, 2) - - 3 3 2 - + 1/5 y DATA(2, 0) - 2/15 y DATA(0, -1) + 1/10 x y DATA(-2, 1) - - 2 3 3 - - 1/20 x y DATA(-2, 2) - 2/15 y DATA(0, 1) + 1/30 y DATA(0, -2) - - 3 3 2 - + 1/5 y DATA(1, 0) + 1/5 y DATA(-1, 0) + 1/49 x y DATA(0, 1) - - 3 2 2 - + 1/5 y DATA(-2, 0) - 1/10 x y DATA(-2, -1) - 1/20 y DATA(0, -2) - - 3 2 31 - + 1/5 y DATA(0, 0) - 2/49 x y DATA(0, -2) + --- DATA(1, 1) - 210 - - 2 2 - + 1/10 y DATA(0, -1) - 1/20 x y DATA(2, -2) - 1/84 DATA(1, -2) - - 2 17 - + 1/20 y DATA(0, 2) - 1/84 DATA(-1, -2) - --- DATA(0, -2) - 420 - - 2 53 191 - + 1/49 x y DATA(-1, 0) - -- y DATA(-1, 0) + ---- y DATA(0, 2) - 98 2940 - - 41 41 53 166 - - -- y DATA(2, 0) - -- y DATA(-2, 0) - -- y DATA(1, 0) + --- y DATA(0, -1) - 98 98 98 735 - - 166 191 57 - + --- y DATA(0, 1) + ---- y DATA(0, -2) - -- y DATA(0, 0) - 735 2940 98 - - 2 2 2 - + 1/49 x y DATA(1, 0) + 1/35 x DATA(0, -2) - 2/49 x y DATA(-2, 0) - - 2 2 2 - - 1/20 x y DATA(1, 1) - 1/49 x y DATA(-2, 1) + 2/49 x y DATA(-2, 2) - - 31 2 2 - + --- DATA(-2, -2) - 1/49 x y DATA(2, -1) + 1/98 x y DATA(-1, -1) - 420 - - 2 2 2 - + 1/98 x y DATA(1, -1) + 1/98 x y DATA(-1, 1) - 1/10 y DATA(0, 1) - - 2 2 17 - + 2/49 x y DATA(2, 2) - 1/49 x y DATA(1, 2) + --- DATA(0, 1) - 105 - - 2 2 - - 1/49 x y DATA(-1, 2) - 1/49 x y DATA(2, 1) - 1/35 x y DATA(2, 1) - - 2 2 2 - + 1/10 y DATA(-2, -1) - 2/49 x y DATA(0, 2) - 2/49 x y DATA(2, 0) - - 2 - + 1/49 x y DATA(0, -1) + 1/35 x y DATA(1, 2) + 2/35 x y DATA(2, 2) - - 11 - + --- DATA(-2, 1) - 1/35 x y DATA(1, 0) + 2/35 x y DATA(-2, 0) - 105 - - - 2/35 x y DATA(2, 0) - 1/35 x y DATA(-1, -2) - 2/35 x y DATA(-2, -2) - - 2 3 - + 1/35 x y DATA(-2, -1) - 1/40 x y DATA(-1, 2) - 1/60 x DATA(1, 1) - - 3 2 - - 1/60 x DATA(2, -2) - 1/70 x y DATA(1, 1) - 1/140 x DATA(1, 1) - - 3 2 2 - + 1/120 x DATA(-2, -1) - 1/35 x DATA(2, -2) + 1/70 x DATA(1, -2) - - 2 2 - - 1/35 x DATA(-2, -2) + 1/70 x DATA(-1, -2) + 1/35 x y DATA(1, -2) - - 2 2 2 - + 2/49 x y DATA(0, 0) + 1/70 x DATA(-2, 1) + 1/35 x DATA(-2, 2) - - 2 2 2 - - 1/70 x DATA(2, -1) + 1/140 x DATA(1, -1) + 1/140 x DATA(-1, -1) - - 2 2 2 - - 1/70 x DATA(-1, 2) + 1/35 x DATA(2, 2) - 1/49 x y DATA(-1, -2) - - 289 2 - + 1/35 x y DATA(-1, 0) - ---- y DATA(2, -2) - 1/140 x DATA(-1, 1) - 2940 - - 2 2 226 - - 1/70 x DATA(1, 2) + 1/70 x DATA(2, 1) + --- y DATA(-2, -1) - 735 - - 2 289 181 - + 2/49 x y DATA(-2, -2) - ---- y DATA(-2, 2) + --- y DATA(1, 1) - 2940 735 - - 71 71 289 - + ---- y DATA(1, -2) + ---- y DATA(-1, -2) - ---- y DATA(-2, -2) - 2940 2940 2940 - - 226 181 71 - + --- y DATA(-2, 1) + --- y DATA(1, -1) + ---- y DATA(1, 2) - 735 735 2940 - - 226 181 226 - + --- y DATA(2, -1) + --- y DATA(-1, -1) + --- y DATA(2, 1) - 735 735 735 - - 71 181 289 - + ---- y DATA(-1, 2) + --- y DATA(-1, 1) - ---- y DATA(2, 2) - 2940 735 2940 - - 2 2 2 - - 1/20 y DATA(-2, -2) - 1/20 y DATA(2, -2) - 1/10 y DATA(1, 1) - - 2 2 2 - - 1/49 x y DATA(-2, -1) - 1/20 y DATA(1, -2) - 1/20 y DATA(-1, -2) - - 2 2 2 - + 1/20 y DATA(-2, 2) + 1/10 y DATA(1, -1) + 1/10 y DATA(2, -1) - - 2 2 2 - - 1/10 y DATA(-2, 1) + 1/20 y DATA(1, 2) + 1/10 y DATA(-1, -1) - - 2 2 2 - - 1/10 y DATA(-1, 1) + 1/20 y DATA(2, 2) + 2/49 x y DATA(2, -2) - - 2 2 37 - + 1/20 y DATA(-1, 2) - 1/10 y DATA(2, 1) - --- x DATA(1, -1) - 300 - - 21 21 2 - - --- x DATA(-1, 2) + --- x DATA(2, 1) + 1/98 x y DATA(1, 1) - 200 200 - - 21 11 21 - - --- x DATA(1, -2) - --- x DATA(2, 2) + --- x DATA(1, 2) - 200 150 200 - - 37 21 37 - - --- x DATA(-1, 1) - --- x DATA(2, -1) + --- x DATA(-1, -1) - 300 200 300 - - 21 11 21 - + --- x DATA(-1, -2) - --- x DATA(-2, -2) - --- x DATA(-2, 1) - 200 150 200 - - 11 2 11 - + --- x DATA(-2, 2) - 1/49 x y DATA(1, -2) + --- x DATA(2, -2) - 150 150 - - 37 3 - + --- x DATA(1, 1) + 1/35 x y DATA(-2, 1) + 1/30 y DATA(2, -2) - 300 - - 3 21 3 - - 2/15 y DATA(-2, -1) + --- x DATA(-2, -1) - 2/15 y DATA(1, 1) - 200 - - 3 3 3 - + 1/30 y DATA(-2, 2) + 1/30 y DATA(1, -2) + 1/30 y DATA(-1, -2) - - 3 3 - + 1/30 y DATA(-2, -2) + 2/35 x y DATA(2, -2) + 1/30 y DATA(1, 2) - - 3 3 3 - - 2/15 y DATA(-2, 1) - 2/15 y DATA(2, -1) - 2/15 y DATA(-1, -1) - - 3 3 3 - - 2/15 y DATA(2, 1) - 2/15 y DATA(-1, 1) + 1/30 y DATA(2, 2) - - 3 3 3 - - 2/15 y DATA(1, -1) + 1/30 x DATA(-1, 2) + 1/30 y DATA(-1, 2) - - 3 3 3 - + 1/120 x DATA(2, 1) + 1/60 x DATA(1, -1) + 1/60 x DATA(2, 2) - - 3 3 3 - + 1/60 x DATA(-1, 1) - 1/30 x DATA(1, 2) - 1/60 x DATA(-2, 2) - - 3 3 3 - - 1/60 x DATA(-1, -1) + 1/30 x DATA(1, -2) - 1/120 x DATA(2, -1) - - 2 3 3 - - 1/70 x DATA(-2, -1) - 1/30 x DATA(-1, -2) + 1/60 x DATA(-2, -2) - - 3 31 - - 1/120 x DATA(-2, 1) - 1/35 x y DATA(-1, 2) - --- DATA(-2, 2) - 420 - - 11 31 17 31 - - --- DATA(2, -1) - --- DATA(-1, -1) - --- DATA(0, -1) - --- DATA(1, -1) - 105 210 105 210 - - 31 31 17 - + --- DATA(-1, 1) - --- DATA(2, 2) + 1/84 DATA(1, 2) + --- DATA(0, 2) - 210 420 420 - - 11 - + 1/84 DATA(-1, 2) + --- DATA(2, 1) - 105 - -> coeff_as_lc_of_data(%, posn_list_2d_size5); -bytes used=85093924, alloc=2424388, time=7.17 -bytes used=86098964, alloc=2424388, time=7.24 - 3 2 31 2 2 -[COEFF(-2, -2) = 1/30 y - 2/35 x y - 1/35 x + --- + 1/20 x y - 1/20 y - 420 - - 289 2 11 3 2 71 - - ---- y + 2/49 x y - --- x + 1/60 x , COEFF(-1, -2) = - 1/20 y + ---- y - 2940 150 2940 - - 2 2 2 3 21 3 - - 1/49 x y + 1/70 x - 1/84 + 1/40 x y + 1/30 y + --- x - 1/30 x - 200 - - - 1/35 x y, - - 2 2 191 3 17 2 - COEFF(0, -2) = - 1/20 y + 1/35 x + ---- y + 1/30 y - --- - 2/49 x y, - 2940 420 - - 2 71 2 3 21 - COEFF(1, -2) = 1/70 x + ---- y - 1/40 x y + 1/30 y + 1/35 x y - --- x - 2940 200 - - 2 3 2 31 2 - - 1/20 y + 1/30 x - 1/49 x y - 1/84, COEFF(2, -2) = --- - 1/20 y - 420 - - 2 3 2 3 289 2 - - 1/35 x + 1/30 y - 1/20 x y - 1/60 x + 2/35 x y - ---- y + 2/49 x y - 2940 - - 11 3 3 2 11 - + --- x, COEFF(-2, -1) = - 2/15 y + 1/120 x + 1/10 y - --- + 1/35 x y - 150 105 - - 226 2 21 2 2 2 - + --- y - 1/10 x y + --- x - 1/70 x - 1/49 x y, COEFF(-1, -1) = 1/10 y - 735 200 - - 31 2 2 181 37 2 3 - - --- + 1/140 x + 1/98 x y + --- y + --- x - 1/20 x y - 1/60 x - 210 735 300 - - 3 - + 1/70 x y - 2/15 y , - - 2 17 3 2 2 166 - COEFF(0, -1) = 1/10 y - --- - 2/15 y + 1/49 x y + 1/70 x + --- y, - 105 735 - - 181 37 3 3 2 - COEFF(1, -1) = --- y - --- x - 1/70 x y + 1/60 x - 2/15 y + 1/140 x - 735 300 - - 2 2 2 31 2 - + 1/20 x y + 1/10 y + 1/98 x y - ---, COEFF(2, -1) = 1/10 x y - 210 - - 2 2 11 3 2 21 - - 1/49 x y + 1/10 y - 1/35 x y - --- - 2/15 y - 1/70 x - --- x - 105 200 - - 3 226 41 3 2 - - 1/120 x + --- y, COEFF(-2, 0) = - -- y + 1/5 y + 2/35 x y - 2/49 x y, - 735 98 - - 3 53 2 - COEFF(-1, 0) = 1/35 x y + 1/5 y - -- y + 1/49 x y, - 98 - - 3 57 2 - COEFF(0, 0) = 1/5 y - -- y + 2/49 x y, - 98 - - 53 2 3 - COEFF(1, 0) = - 1/35 x y - -- y + 1/49 x y + 1/5 y , - 98 - - 3 2 41 - COEFF(2, 0) = 1/5 y - 2/35 x y - 2/49 x y - -- y, COEFF(-2, 1) = - 98 - - 2 2 226 3 2 21 - - 1/10 y + 1/10 x y + --- y - 2/15 y - 1/49 x y - --- x + 1/35 x y - 735 200 - - 2 11 3 31 37 - + 1/70 x + --- - 1/120 x , COEFF(-1, 1) = --- + 1/70 x y - --- x - 105 210 300 - - 2 181 2 3 3 2 2 - + 1/20 x y + --- y + 1/98 x y - 2/15 y + 1/60 x - 1/10 y - 1/140 x , - 735 - - 2 166 17 3 2 2 - COEFF(0, 1) = - 1/10 y + --- y + --- - 2/15 y + 1/49 x y - 1/70 x , - 735 105 - - 2 3 2 2 2 - COEFF(1, 1) = - 1/10 y - 1/60 x - 1/140 x - 1/20 x y + 1/98 x y - - 3 37 31 181 - - 2/15 y + --- x - 1/70 x y + --- + --- y, COEFF(2, 1) = - 1/35 x y - 300 210 735 - - 21 3 2 2 2 3 2 - + --- x - 2/15 y - 1/49 x y - 1/10 y + 1/70 x + 1/120 x - 1/10 x y - 200 - - 11 226 2 2 3 - + --- + --- y, COEFF(-2, 2) = 2/49 x y - 2/35 x y + 1/35 x + 1/30 y - 105 735 - - 2 31 2 11 289 3 - - 1/20 x y - --- + 1/20 y + --- x - ---- y - 1/60 x , COEFF(-1, 2) = - 420 150 2940 - - 2 71 2 21 3 3 2 - - 1/70 x + ---- y - 1/49 x y - --- x + 1/30 y + 1/30 x - 1/40 x y - 2940 200 - - 2 - - 1/35 x y + 1/20 y + 1/84, - - 191 3 2 17 2 2 - COEFF(0, 2) = ---- y + 1/30 y - 1/35 x + --- + 1/20 y - 2/49 x y, - 2940 420 - - 2 3 2 2 - COEFF(1, 2) = 1/84 + 1/40 x y + 1/30 y + 1/20 y + 1/35 x y - 1/70 x - - 2 3 71 21 31 - - 1/49 x y - 1/30 x + ---- y + --- x, COEFF(2, 2) = - --- + 2/35 x y - 2940 200 420 - - 2 3 2 2 3 289 2 - + 2/49 x y + 1/30 y + 1/35 x + 1/20 x y + 1/60 x - ---- y + 1/20 y - 2940 - - 11 - - --- x] - 150 - -> print_coeff__lc_of_data(%, "coeff_dy_", "fp", -> "2d.coeffs/2d.cube.order4.smooth0/coeff-dy.compute.c"); -bytes used=87100992, alloc=2424388, time=7.30 -bytes used=88106012, alloc=2424388, time=7.37 -bytes used=89106148, alloc=2424388, time=7.50 -bytes used=90106304, alloc=2424388, time=7.60 -bytes used=91111508, alloc=2424388, time=7.69 -bytes used=92111784, alloc=2424388, time=7.86 -bytes used=93111940, alloc=2424388, time=7.94 -bytes used=94112152, alloc=2424388, time=8.10 -bytes used=95112368, alloc=2424388, time=8.17 -bytes used=96112620, alloc=2424388, time=8.33 -> -# d^2/dx^2 -> simplify( diff(interp_2d_cube_order4_smooth0,x,x) ); -bytes used=97112788, alloc=2424388, time=8.44 -- 1/10 x y DATA(-2, 2) - 1/20 x y DATA(2, -1) - 1/10 x y DATA(-1, -1) - - 71 - + 1/10 x y DATA(1, -1) + 1/10 x y DATA(-1, 1) + ---- DATA(-2, -1) - 2940 - - 2 2 2 - + 3/5 x DATA(0, 1) + 3/5 x DATA(0, 2) + 3/5 x DATA(0, -1) - - 289 2 181 - - ---- DATA(2, -2) - 2/49 y DATA(0, -2) + --- DATA(1, 1) - 2940 735 - - 2 226 2 - + 1/49 y DATA(0, -1) + --- DATA(1, -2) - 2/49 y DATA(0, 2) - 735 - - 226 41 - + --- DATA(-1, -2) - -- DATA(0, -2) - 2/35 y DATA(0, 2) - 735 98 - - + 1/35 y DATA(0, -1) - 1/35 y DATA(0, 1) + 2/35 y DATA(0, -2) - - 2 289 57 - + 3/5 x DATA(0, -2) - ---- DATA(-2, -2) - -- DATA(0, 0) - 2940 98 - - 2 166 53 - + 1/49 y DATA(0, 1) + --- DATA(1, 0) - -- DATA(0, 1) - 735 98 - - 2 - + 1/20 x y DATA(2, 1) - 1/49 y DATA(-2, -1) - 1/5 x y DATA(1, 2) - - 71 191 - + 1/10 x y DATA(2, 2) + ---- DATA(-2, 1) + ---- DATA(-2, 0) - 2940 2940 - - - 1/5 x y DATA(-1, -2) + 1/10 x y DATA(-2, -2) + 1/20 x y DATA(-2, -1) - - 2 2 - - 1/10 x y DATA(1, 1) - 2/5 x DATA(1, 1) + 1/10 x DATA(2, -2) - - 2 2 2 - - 2/5 x DATA(1, -2) + 1/10 x DATA(-2, -2) - 2/5 x DATA(-1, -2) - - 2 2 - + 1/5 x y DATA(1, -2) + 1/10 x DATA(-2, 1) + 1/10 x DATA(-2, 2) - - 2 2 2 - + 1/10 x DATA(2, -1) - 2/5 x DATA(1, -1) - 2/5 x DATA(-1, -1) - - 2 2 - - 2/5 x DATA(-1, 2) + 1/10 x DATA(2, 2) - 2/35 y DATA(2, -2) - - 2 2 2 - - 2/5 x DATA(-1, 1) - 2/5 x DATA(1, 2) + 1/10 x DATA(2, 1) - - - 1/35 y DATA(-2, -1) + 2/35 y DATA(-2, 2) - 1/70 y DATA(1, 1) - - + 1/35 y DATA(1, -2) + 1/35 y DATA(-1, -2) - 2/35 y DATA(-2, -2) - - + 1/35 y DATA(-2, 1) + 1/70 y DATA(1, -1) - 1/35 y DATA(1, 2) - - - 1/35 y DATA(2, -1) + 1/70 y DATA(-1, -1) + 1/35 y DATA(2, 1) - - - 1/35 y DATA(-1, 2) - 1/70 y DATA(-1, 1) + 2/35 y DATA(2, 2) - - 2 2 2 - + 2/49 y DATA(-2, -2) + 2/49 y DATA(2, -2) + 1/98 y DATA(1, 1) - - 2 2 2 - - 1/49 y DATA(1, -2) - 1/49 y DATA(-1, -2) + 2/49 y DATA(-2, 2) - - 2 2 2 - + 1/98 y DATA(1, -1) - 1/49 y DATA(2, -1) - 1/49 y DATA(-2, 1) - - 2 2 2 - - 1/49 y DATA(1, 2) + 1/98 y DATA(-1, -1) + 1/98 y DATA(-1, 1) - - 2 2 2 - + 2/49 y DATA(2, 2) - 1/49 y DATA(-1, 2) - 1/49 y DATA(2, 1) - - - 1/5 x DATA(1, -1) + 1/5 x DATA(-1, 2) + 1/10 x DATA(2, 1) - - - 1/5 x DATA(1, -2) + 1/10 x DATA(2, 2) - 1/5 x DATA(1, 2) - - + 1/5 x DATA(-1, 1) + 1/10 x DATA(2, -1) + 1/5 x DATA(-1, -1) - - + 1/5 x DATA(-1, -2) - 1/10 x DATA(-2, -2) - 1/10 x DATA(-2, 1) - - - 1/10 x DATA(-2, 2) + 1/10 x DATA(2, -2) - 1/5 x DATA(1, 1) - - - 1/20 x y DATA(-2, 1) - 1/10 x DATA(-2, -1) - 1/10 x y DATA(2, -2) - - 2 289 - + 1/10 x DATA(-2, -1) + 1/5 x y DATA(-1, 2) - ---- DATA(-2, 2) - 2940 - - 191 71 181 53 - + ---- DATA(2, 0) + ---- DATA(2, -1) + --- DATA(-1, -1) - -- DATA(0, -1) - 2940 2940 735 98 - - 181 166 181 289 - + --- DATA(1, -1) + --- DATA(-1, 0) + --- DATA(-1, 1) - ---- DATA(2, 2) - 735 735 735 2940 - - 226 41 226 71 - + --- DATA(1, 2) - -- DATA(0, 2) + --- DATA(-1, 2) + ---- DATA(2, 1) - 735 98 735 2940 - - 2 2 - - 2/49 y DATA(-2, 0) - 2/49 y DATA(2, 0) - 1/10 x DATA(-2, 0) - - 2 - + 1/10 x DATA(2, 0) + 1/5 x DATA(-1, 0) + 1/49 y DATA(-1, 0) - - 2 2 2 - + 2/49 y DATA(0, 0) + 1/49 y DATA(1, 0) + 3/5 x DATA(0, 0) - - 2 2 2 - - 2/5 x DATA(1, 0) + 1/10 x DATA(-2, 0) + 1/10 x DATA(2, 0) - - 2 - - 2/5 x DATA(-1, 0) - 1/5 x DATA(1, 0) - -> coeff_as_lc_of_data(%, posn_list_2d_size5); -bytes used=98113836, alloc=2424388, time=8.50 - 2 2 289 -[COEFF(-2, -2) = 2/49 y - 2/35 y + 1/10 x - ---- - 1/10 x + 1/10 x y, - 2940 - - 2 2 226 - COEFF(-1, -2) = 1/5 x - 1/5 x y - 1/49 y + 1/35 y - 2/5 x + ---, - 735 - - 2 2 41 - COEFF(0, -2) = 2/35 y - 2/49 y + 3/5 x - --, - 98 - - 2 226 2 - COEFF(1, -2) = - 1/5 x - 1/49 y + --- + 1/35 y - 2/5 x + 1/5 x y, - 735 - - 289 2 2 - COEFF(2, -2) = - ---- + 1/10 x + 1/10 x - 2/35 y - 1/10 x y + 2/49 y , - 2940 - - 2 71 2 - COEFF(-2, -1) = - 1/35 y - 1/10 x + 1/10 x + ---- - 1/49 y + 1/20 x y, - 2940 - - 2 2 181 - COEFF(-1, -1) = - 1/10 x y + 1/98 y - 2/5 x + 1/70 y + 1/5 x + ---, - 735 - - 2 53 2 - COEFF(0, -1) = 3/5 x - -- + 1/35 y + 1/49 y , - 98 - - 2 181 2 - COEFF(1, -1) = - 2/5 x + --- + 1/98 y + 1/10 x y + 1/70 y - 1/5 x, - 735 - - 2 2 71 - COEFF(2, -1) = 1/10 x - 1/20 x y - 1/49 y + ---- - 1/35 y + 1/10 x, - 2940 - - 191 2 2 - COEFF(-2, 0) = ---- - 2/49 y - 1/10 x + 1/10 x , - 2940 - - 166 2 2 - COEFF(-1, 0) = --- + 1/5 x + 1/49 y - 2/5 x , - 735 - - 2 57 2 - COEFF(0, 0) = 3/5 x - -- + 2/49 y , - 98 - - 166 2 2 - COEFF(1, 0) = --- - 2/5 x + 1/49 y - 1/5 x, - 735 - - 191 2 2 - COEFF(2, 0) = ---- + 1/10 x - 2/49 y + 1/10 x , - 2940 - - 2 71 2 - COEFF(-2, 1) = 1/10 x - 1/20 x y + ---- + 1/35 y - 1/10 x - 1/49 y , - 2940 - - 2 181 2 - COEFF(-1, 1) = 1/98 y - 1/70 y + --- - 2/5 x + 1/5 x + 1/10 x y, - 735 - - 2 2 53 - COEFF(0, 1) = 1/49 y + 3/5 x - 1/35 y - --, - 98 - - 2 2 181 - COEFF(1, 1) = - 1/70 y - 2/5 x + 1/98 y + --- - 1/5 x - 1/10 x y, - 735 - - 2 2 71 - COEFF(2, 1) = - 1/49 y + 1/10 x + 1/10 x + 1/20 x y + ---- + 1/35 y, - 2940 - - 2 2 289 - COEFF(-2, 2) = 2/35 y + 1/10 x - 1/10 x y + 2/49 y - 1/10 x - ----, - 2940 - - 226 2 2 - COEFF(-1, 2) = --- + 1/5 x y + 1/5 x - 1/49 y - 1/35 y - 2/5 x , - 735 - - 2 41 2 - COEFF(0, 2) = - 2/35 y + 3/5 x - -- - 2/49 y , - 98 - - 2 2 226 - COEFF(1, 2) = - 1/49 y - 2/5 x - 1/35 y + --- - 1/5 x - 1/5 x y, - 735 - - 289 2 2 - COEFF(2, 2) = 1/10 x + 2/35 y - ---- + 1/10 x + 1/10 x y + 2/49 y ] - 2940 - -> print_coeff__lc_of_data(%, "coeff_dxx_", "fp", -> "2d.coeffs/2d.cube.order4.smooth0/coeff-dxx.compute.c"); -bytes used=99114256, alloc=2424388, time=8.57 -bytes used=100114744, alloc=2424388, time=8.63 -bytes used=101114908, alloc=2424388, time=8.77 -bytes used=102115104, alloc=2424388, time=8.91 -bytes used=103115472, alloc=2424388, time=9.00 -bytes used=104115664, alloc=2424388, time=9.11 -bytes used=105115868, alloc=2424388, time=9.29 -> -# d^2/dxdy -> simplify( diff(interp_2d_cube_order4_smooth0,x,y) ); -bytes used=106116040, alloc=2424388, time=9.36 -4/49 x y DATA(-2, 2) - 2/49 x y DATA(2, -1) + 1/49 x y DATA(-1, -1) - - 21 - + 1/49 x y DATA(1, -1) + 1/49 x y DATA(-1, 1) + --- DATA(-2, -1) - 200 - - 11 37 21 21 - + --- DATA(2, -2) + --- DATA(1, 1) - --- DATA(1, -2) + --- DATA(-1, -2) - 150 300 200 200 - - 11 2 - - --- DATA(-2, -2) - 2/49 x y DATA(2, 1) - 1/10 y DATA(-2, -1) - 150 - - 21 - - 2/49 x y DATA(1, 2) + 4/49 x y DATA(2, 2) - --- DATA(-2, 1) - 200 - - - 2/49 x y DATA(-1, -2) + 4/49 x y DATA(-2, -2) - 2/49 x y DATA(-2, -1) - - 2 2 - + 1/49 x y DATA(1, 1) - 1/20 x DATA(1, 1) - 1/20 x DATA(2, -2) - - 2 2 2 - + 1/10 x DATA(1, -2) + 1/20 x DATA(-2, -2) - 1/10 x DATA(-1, -2) - - 2 2 - - 2/49 x y DATA(1, -2) - 1/40 x DATA(-2, 1) - 1/20 x DATA(-2, 2) - - 2 2 2 - - 1/40 x DATA(2, -1) + 1/20 x DATA(1, -1) - 1/20 x DATA(-1, -1) - - 2 2 - + 1/10 x DATA(-1, 2) + 1/20 x DATA(2, 2) + 2/35 y DATA(2, -2) - - 2 2 2 - + 1/20 x DATA(-1, 1) - 1/10 x DATA(1, 2) + 1/40 x DATA(2, 1) - - + 1/35 y DATA(-2, -1) - 2/35 y DATA(-2, 2) - 1/70 y DATA(1, 1) - - + 1/35 y DATA(1, -2) - 1/35 y DATA(-1, -2) - 2/35 y DATA(-2, -2) - - + 1/35 y DATA(-2, 1) - 1/70 y DATA(1, -1) + 1/35 y DATA(1, 2) - - - 1/35 y DATA(2, -1) + 1/70 y DATA(-1, -1) - 1/35 y DATA(2, 1) - - - 1/35 y DATA(-1, 2) + 1/70 y DATA(-1, 1) + 2/35 y DATA(2, 2) - - 2 2 2 - + 1/20 y DATA(-2, -2) - 1/20 y DATA(2, -2) - 1/20 y DATA(1, 1) - - 2 2 2 - - 1/40 y DATA(1, -2) + 1/40 y DATA(-1, -2) - 1/20 y DATA(-2, 2) - - 2 2 2 - + 1/20 y DATA(1, -1) + 1/10 y DATA(2, -1) + 1/10 y DATA(-2, 1) - - 2 2 2 - + 1/40 y DATA(1, 2) - 1/20 y DATA(-1, -1) + 1/20 y DATA(-1, 1) - - 2 2 2 - + 1/20 y DATA(2, 2) - 1/40 y DATA(-1, 2) - 1/10 y DATA(2, 1) - - + 1/70 x DATA(1, -1) - 1/35 x DATA(-1, 2) + 1/35 x DATA(2, 1) - - + 1/35 x DATA(1, -2) + 2/35 x DATA(2, 2) - 1/35 x DATA(1, 2) - - - 1/70 x DATA(-1, 1) - 1/35 x DATA(2, -1) + 1/70 x DATA(-1, -1) - - + 1/35 x DATA(-1, -2) - 2/35 x DATA(-2, -2) + 1/35 x DATA(-2, 1) - - + 2/35 x DATA(-2, 2) - 2/35 x DATA(2, -2) - 1/70 x DATA(1, 1) - - - 2/49 x y DATA(-2, 1) - 1/35 x DATA(-2, -1) + 4/49 x y DATA(2, -2) - - 2 11 - + 1/40 x DATA(-2, -1) - 2/49 x y DATA(-1, 2) + --- DATA(-2, 2) - 150 - - 21 37 37 37 - - --- DATA(2, -1) + --- DATA(-1, -1) - --- DATA(1, -1) - --- DATA(-1, 1) - 200 300 300 300 - - 11 21 21 21 - - --- DATA(2, 2) + --- DATA(1, 2) - --- DATA(-1, 2) + --- DATA(2, 1) - 150 200 200 200 - - - 1/35 y DATA(1, 0) + 2/35 y DATA(-2, 0) - 2/35 y DATA(2, 0) - - - 1/35 x DATA(0, 1) + 2/35 x DATA(0, -2) + 1/35 y DATA(-1, 0) - - + 1/35 x DATA(0, -1) - 2/35 x DATA(0, 2) - 4/49 x y DATA(0, 2) - - - 4/49 x y DATA(0, -2) + 2/49 x y DATA(1, 0) + 2/49 x y DATA(0, 1) - - + 4/49 x y DATA(0, 0) - 4/49 x y DATA(-2, 0) - 4/49 x y DATA(2, 0) - - + 2/49 x y DATA(0, -1) + 2/49 x y DATA(-1, 0) - -> coeff_as_lc_of_data(%, posn_list_2d_size5); -bytes used=107120752, alloc=2424388, time=9.42 - 11 2 2 -[COEFF(-2, -2) = 4/49 x y - --- + 1/20 y - 2/35 x + 1/20 x - 2/35 y, - 150 - - 2 21 2 - COEFF(-1, -2) = - 1/35 y + 1/40 y + --- + 1/35 x - 2/49 x y - 1/10 x , - 200 - - COEFF(0, -2) = - 4/49 x y + 2/35 x, - - 2 21 2 - COEFF(1, -2) = 1/35 y + 1/35 x - 1/40 y - --- - 2/49 x y + 1/10 x , - 200 - - 2 11 2 - COEFF(2, -2) = - 1/20 y - 2/35 x + --- + 2/35 y + 4/49 x y - 1/20 x , - 150 - - 2 2 21 - COEFF(-2, -1) = - 2/49 x y + 1/40 x - 1/10 y + 1/35 y + --- - 1/35 x, - 200 - - 2 37 2 - COEFF(-1, -1) = - 1/20 x + --- + 1/49 x y + 1/70 y - 1/20 y + 1/70 x, - 300 - - COEFF(0, -1) = 1/35 x + 2/49 x y, - - 37 2 2 - COEFF(1, -1) = 1/70 x - --- - 1/70 y + 1/20 y + 1/49 x y + 1/20 x , - 300 - - 2 2 21 - COEFF(2, -1) = 1/10 y - 2/49 x y - 1/40 x - 1/35 x - 1/35 y - ---, - 200 - - COEFF(-2, 0) = - 4/49 x y + 2/35 y, COEFF(-1, 0) = 2/49 x y + 1/35 y, - - COEFF(0, 0) = 4/49 x y, COEFF(1, 0) = 2/49 x y - 1/35 y, - - COEFF(2, 0) = - 2/35 y - 4/49 x y, - - 2 21 2 - COEFF(-2, 1) = 1/10 y - --- - 2/49 x y + 1/35 x + 1/35 y - 1/40 x , - 200 - - 37 2 2 - COEFF(-1, 1) = 1/70 y + 1/49 x y - 1/70 x - --- + 1/20 y + 1/20 x , - 300 - - COEFF(0, 1) = - 1/35 x + 2/49 x y, - - 37 2 2 - COEFF(1, 1) = - 1/70 x + 1/49 x y - 1/70 y + --- - 1/20 y - 1/20 x , - 300 - - 21 2 2 - COEFF(2, 1) = - 1/35 y + 1/35 x + --- - 1/10 y + 1/40 x - 2/49 x y, - 200 - - 2 2 11 - COEFF(-2, 2) = - 1/20 y + 4/49 x y - 1/20 x + 2/35 x + --- - 2/35 y, - 150 - - 2 21 2 - COEFF(-1, 2) = - 1/40 y - 1/35 x - --- - 2/49 x y - 1/35 y + 1/10 x , - 200 - - COEFF(0, 2) = - 2/35 x - 4/49 x y, - - 21 2 2 - COEFF(1, 2) = - 2/49 x y + 1/35 y - 1/35 x + --- + 1/40 y - 1/10 x , - 200 - - 11 2 2 - COEFF(2, 2) = 4/49 x y - --- + 2/35 y + 1/20 y + 1/20 x + 2/35 x] - 150 - -> print_coeff__lc_of_data(%, "coeff_dxy_", "fp", -> "2d.coeffs/2d.cube.order4.smooth0/coeff-dxy.compute.c"); -bytes used=108120964, alloc=2424388, time=9.49 -bytes used=109121128, alloc=2424388, time=9.64 -bytes used=110121320, alloc=2424388, time=9.75 -bytes used=111121520, alloc=2424388, time=9.88 -bytes used=112121728, alloc=2424388, time=10.04 -bytes used=113121904, alloc=2424388, time=10.25 -> -# d^2/dy^2 -> simplify( diff(interp_2d_cube_order4_smooth0,y,y) ); -bytes used=114122480, alloc=2424388, time=10.37 -bytes used=115123248, alloc=2424388, time=10.44 - 2 2 -3/5 y DATA(1, 0) - 2/5 y DATA(0, 1) - 1/10 x y DATA(-2, 2) - - + 1/5 x y DATA(2, -1) - 1/10 x y DATA(-1, -1) + 1/10 x y DATA(1, -1) - - 226 289 - + 1/10 x y DATA(-1, 1) + --- DATA(-2, -1) - ---- DATA(2, -2) - 735 2940 - - 181 71 71 191 - + --- DATA(1, 1) + ---- DATA(1, -2) + ---- DATA(-1, -2) + ---- DATA(0, -2) - 735 2940 2940 2940 - - 289 57 53 166 - - ---- DATA(-2, -2) - -- DATA(0, 0) - -- DATA(1, 0) + --- DATA(0, 1) - 2940 98 98 735 - - 2 - - 1/5 x y DATA(2, 1) - 2/5 y DATA(-2, -1) + 1/20 x y DATA(1, 2) - - 226 41 - + 1/10 x y DATA(2, 2) + --- DATA(-2, 1) - -- DATA(-2, 0) - 735 98 - - + 1/20 x y DATA(-1, -2) + 1/10 x y DATA(-2, -2) - 1/5 x y DATA(-2, -1) - - 2 2 - - 1/10 x y DATA(1, 1) + 1/98 x DATA(1, 1) + 2/49 x DATA(2, -2) - - 2 2 2 - - 1/49 x DATA(1, -2) + 2/49 x DATA(-2, -2) - 1/49 x DATA(-1, -2) - - 2 2 - - 1/20 x y DATA(1, -2) - 1/49 x DATA(-2, 1) + 2/49 x DATA(-2, 2) - - 2 2 2 - - 1/49 x DATA(2, -1) + 1/98 x DATA(1, -1) + 1/98 x DATA(-1, -1) - - 2 2 - - 1/49 x DATA(-1, 2) + 2/49 x DATA(2, 2) - 1/10 y DATA(2, -2) - - 2 2 2 - + 1/98 x DATA(-1, 1) - 1/49 x DATA(1, 2) - 1/49 x DATA(2, 1) - - + 1/5 y DATA(-2, -1) + 1/10 y DATA(-2, 2) - 1/5 y DATA(1, 1) - - - 1/10 y DATA(1, -2) - 1/10 y DATA(-1, -2) - 1/10 y DATA(-2, -2) - - - 1/5 y DATA(-2, 1) + 1/5 y DATA(1, -1) + 1/10 y DATA(1, 2) - - + 1/5 y DATA(2, -1) + 1/5 y DATA(-1, -1) - 1/5 y DATA(2, 1) - - + 1/10 y DATA(-1, 2) - 1/5 y DATA(-1, 1) + 1/10 y DATA(2, 2) - - 2 2 2 - + 1/10 y DATA(-2, -2) + 1/10 y DATA(2, -2) - 2/5 y DATA(1, 1) - - 2 2 2 - + 1/10 y DATA(1, -2) + 1/10 y DATA(-1, -2) + 1/10 y DATA(-2, 2) - - 2 2 2 - - 2/5 y DATA(1, -1) - 2/5 y DATA(2, -1) - 2/5 y DATA(-2, 1) - - 2 2 2 - + 1/10 y DATA(1, 2) - 2/5 y DATA(-1, -1) - 2/5 y DATA(-1, 1) - - 2 2 2 - + 1/10 y DATA(2, 2) + 1/10 y DATA(-1, 2) - 2/5 y DATA(2, 1) - - - 1/70 x DATA(1, -1) - 1/35 x DATA(-1, 2) - 1/35 x DATA(2, 1) - - + 1/35 x DATA(1, -2) + 2/35 x DATA(2, 2) + 1/35 x DATA(1, 2) - - + 1/70 x DATA(-1, 1) - 1/35 x DATA(2, -1) + 1/70 x DATA(-1, -1) - - - 1/35 x DATA(-1, -2) - 2/35 x DATA(-2, -2) + 1/35 x DATA(-2, 1) - - - 2/35 x DATA(-2, 2) + 2/35 x DATA(2, -2) - 1/70 x DATA(1, 1) - - + 1/5 x y DATA(-2, 1) + 1/35 x DATA(-2, -1) - 1/10 x y DATA(2, -2) - - 2 289 - - 1/49 x DATA(-2, -1) - 1/20 x y DATA(-1, 2) - ---- DATA(-2, 2) - 2940 - - 41 226 181 166 - - -- DATA(2, 0) + --- DATA(2, -1) + --- DATA(-1, -1) + --- DATA(0, -1) - 98 735 735 735 - - 181 53 181 289 - + --- DATA(1, -1) - -- DATA(-1, 0) + --- DATA(-1, 1) - ---- DATA(2, 2) - 735 98 735 2940 - - 71 191 71 226 - + ---- DATA(1, 2) + ---- DATA(0, 2) + ---- DATA(-1, 2) + --- DATA(2, 1) - 2940 2940 2940 735 - - 2 2 2 - - 2/5 y DATA(0, -1) + 3/5 y DATA(-2, 0) + 3/5 y DATA(2, 0) - - 2 2 - + 3/5 y DATA(0, 0) + 3/5 y DATA(-1, 0) - 1/35 x DATA(1, 0) - - 2 - + 1/10 y DATA(0, -2) + 2/35 x DATA(-2, 0) - 2/35 x DATA(2, 0) - - 2 2 - + 1/49 x DATA(0, -1) + 1/49 x DATA(-1, 0) + 1/35 x DATA(-1, 0) - - 2 2 2 - + 1/49 x DATA(0, 1) + 1/49 x DATA(1, 0) - 2/49 x DATA(2, 0) - - 2 2 2 - - 2/49 x DATA(-2, 0) - 2/49 x DATA(0, -2) + 2/49 x DATA(0, 0) - - 2 - - 2/49 x DATA(0, 2) - 1/5 y DATA(0, 1) - 1/10 y DATA(0, -2) - - 2 - + 1/10 y DATA(0, 2) + 1/10 y DATA(0, 2) + 1/5 y DATA(0, -1) - -> coeff_as_lc_of_data(%, posn_list_2d_size5); - 289 2 2 -[COEFF(-2, -2) = - ---- + 1/10 x y - 2/35 x + 2/49 x + 1/10 y - 1/10 y, - 2940 - - 2 71 2 - COEFF(-1, -2) = - 1/10 y + 1/10 y + ---- - 1/35 x - 1/49 x + 1/20 x y, - 2940 - - 191 2 2 - COEFF(0, -2) = ---- - 2/49 x + 1/10 y - 1/10 y, - 2940 - - 2 2 71 - COEFF(1, -2) = - 1/10 y - 1/20 x y + 1/10 y - 1/49 x + 1/35 x + ----, - 2940 - - 2 289 2 - COEFF(2, -2) = - 1/10 x y + 1/10 y - ---- + 2/49 x - 1/10 y + 2/35 x, - 2940 - - 2 226 2 - COEFF(-2, -1) = 1/5 y - 1/5 x y - 1/49 x + --- + 1/35 x - 2/5 y , - 735 - - 2 181 2 - COEFF(-1, -1) = 1/5 y - 1/10 x y + 1/98 x + --- - 2/5 y + 1/70 x, - 735 - - 2 2 166 - COEFF(0, -1) = 1/5 y - 2/5 y + 1/49 x + ---, - 735 - - 181 2 2 - COEFF(1, -1) = - 1/70 x + --- + 1/5 y + 1/98 x + 1/10 x y - 2/5 y , - 735 - - 2 226 2 - COEFF(2, -1) = - 1/35 x - 1/49 x + 1/5 x y + 1/5 y + --- - 2/5 y , - 735 - - 41 2 2 - COEFF(-2, 0) = 2/35 x - -- - 2/49 x + 3/5 y , - 98 - - 53 2 2 - COEFF(-1, 0) = 1/35 x - -- + 1/49 x + 3/5 y , - 98 - - 57 2 2 - COEFF(0, 0) = - -- + 2/49 x + 3/5 y , - 98 - - 2 53 2 - COEFF(1, 0) = 3/5 y - -- - 1/35 x + 1/49 x , - 98 - - 41 2 2 - COEFF(2, 0) = - 2/35 x - -- + 3/5 y - 2/49 x , - 98 - - 2 226 2 - COEFF(-2, 1) = 1/5 x y + 1/35 x - 1/49 x + --- - 1/5 y - 2/5 y , - 735 - - 2 181 2 - COEFF(-1, 1) = - 2/5 y + --- + 1/98 x + 1/70 x - 1/5 y + 1/10 x y, - 735 - - 2 2 166 - COEFF(0, 1) = - 2/5 y - 1/5 y + 1/49 x + ---, - 735 - - 181 2 2 - COEFF(1, 1) = - 1/10 x y + --- - 1/70 x + 1/98 x - 1/5 y - 2/5 y , - 735 - - 226 2 2 - COEFF(2, 1) = --- - 1/35 x - 2/5 y - 1/5 y - 1/49 x - 1/5 x y, - 735 - - 2 2 289 - COEFF(-2, 2) = - 1/10 x y + 1/10 y + 2/49 x + 1/10 y - 2/35 x - ----, - 2940 - - 2 2 71 - COEFF(-1, 2) = - 1/20 x y - 1/49 x - 1/35 x + 1/10 y + 1/10 y + ----, - 2940 - - 191 2 2 - COEFF(0, 2) = ---- - 2/49 x + 1/10 y + 1/10 y, - 2940 - - 2 71 2 - COEFF(1, 2) = 1/35 x + 1/20 x y + 1/10 y + ---- + 1/10 y - 1/49 x , - 2940 - - 289 2 2 - COEFF(2, 2) = - ---- + 1/10 x y + 1/10 y + 2/49 x + 2/35 x + 1/10 y] - 2940 - -> print_coeff__lc_of_data(%, "coeff_dyy_", "fp", -> "2d.coeffs/2d.cube.order4.smooth0/coeff-dyy.compute.c"); -bytes used=116123404, alloc=2424388, time=10.49 -bytes used=117127956, alloc=2424388, time=10.56 -bytes used=118128128, alloc=2424388, time=10.71 -bytes used=119128284, alloc=2424388, time=10.79 -bytes used=120128456, alloc=2424388, time=10.95 -bytes used=121128740, alloc=2424388, time=11.13 -bytes used=122129172, alloc=2424388, time=11.30 -> -################################################################################ -> quit -bytes used=122544808, alloc=2424388, time=11.32 |