aboutsummaryrefslogtreecommitdiff
path: root/src/GeneralizedPolynomial-Uniform/2d.log
diff options
context:
space:
mode:
Diffstat (limited to 'src/GeneralizedPolynomial-Uniform/2d.log')
-rw-r--r--src/GeneralizedPolynomial-Uniform/2d.log4379
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