aboutsummaryrefslogtreecommitdiff
path: root/src/GeneralizedPolynomial-Uniform/2d.log
diff options
context:
space:
mode:
authorjthorn <jthorn@df1f8a13-aa1d-4dd4-9681-27ded5b42416>2002-08-18 15:12:49 +0000
committerjthorn <jthorn@df1f8a13-aa1d-4dd4-9681-27ded5b42416>2002-08-18 15:12:49 +0000
commit15c98b3abee2525b24ca89932256ff2cda63c9bc (patch)
treefba7c114f0b5e7ffdad3e60254fd0e8dd1e42f97 /src/GeneralizedPolynomial-Uniform/2d.log
parent7be0a94bec4b4e89c433e5380fce2cf84e5e0681 (diff)
This commit reorganizes the Maple scripts which generate the interpolation
coefficients, and the coefficient files themselves, to properly support multiple interpolation operators, and adds some skeleton support for Hermite interpolation. I will add full support for Hermite in a future checkin. git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/LocalInterp/trunk@81 df1f8a13-aa1d-4dd4-9681-27ded5b42416
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