68 lines
3.2 KiB
C
68 lines
3.2 KiB
C
/*
|
|
Copyright 2016 Ian Jauslin
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
/*
|
|
Base functions for multivariable polynomials
|
|
|
|
polynomialMV_*.h for the values taken by POLYNOMIALMV_FUNC, etc...
|
|
*/
|
|
|
|
// init
|
|
int POLYNOMIALMV_FUNC(init) (POLYNOMIALMV_TYPENAME* polynomial, int size);
|
|
int POLYNOMIALMV_FUNC(free) (POLYNOMIALMV_TYPENAME polynomial);
|
|
|
|
// resize the memory allocated to a polynomial
|
|
int POLYNOMIALMV_FUNC(resize) (POLYNOMIALMV_TYPENAME* polynomial, int new_size);
|
|
|
|
// copy a polynomial
|
|
int POLYNOMIALMV_FUNC(cpy) (POLYNOMIALMV_TYPENAME input, POLYNOMIALMV_TYPENAME* output);
|
|
int POLYNOMIALMV_FUNC(cpy_noinit) (POLYNOMIALMV_TYPENAME input, POLYNOMIALMV_TYPENAME* output);
|
|
|
|
// append an element to a polynomial
|
|
int POLYNOMIALMV_FUNC(append) (POLYNOMIALMV_FACTOR_TYPE factor, POLYNOMIALMV_COEF_TYPE coef, POLYNOMIALMV_TYPENAME* output);
|
|
// if there already exists an element with the same factor, then just add coefficients
|
|
// requires the factors to be ordered
|
|
int POLYNOMIALMV_FUNC(append_inplace) (POLYNOMIALMV_FACTOR_TYPE factor, POLYNOMIALMV_COEF_TYPE coef, POLYNOMIALMV_TYPENAME* output);
|
|
// do not allocate memory for factor or coefficient
|
|
int POLYNOMIALMV_FUNC(append_noinit) (POLYNOMIALMV_FACTOR_TYPE factor, POLYNOMIALMV_COEF_TYPE coef, POLYNOMIALMV_TYPENAME* output);
|
|
// noinit factor but init coefficient
|
|
int POLYNOMIALMV_FUNC(append_noinitfactor) (POLYNOMIALMV_FACTOR_TYPE factor, POLYNOMIALMV_COEF_TYPE coef, POLYNOMIALMV_TYPENAME* output);
|
|
// noinit
|
|
// if there already exists an element with the same factor, then just add coefficients
|
|
// requires the factors to be ordered
|
|
int POLYNOMIALMV_FUNC(append_noinit_inplace) (POLYNOMIALMV_FACTOR_TYPE factor, POLYNOMIALMV_COEF_TYPE coef, POLYNOMIALMV_TYPENAME* output);
|
|
// noinit factors but init coefficient
|
|
// if there already exists an element with the same factor, then just add coefficients
|
|
// requires the factors to be ordered
|
|
int POLYNOMIALMV_FUNC(append_noinitfactor_inplace) (POLYNOMIALMV_FACTOR_TYPE factor, POLYNOMIALMV_COEF_TYPE coef, POLYNOMIALMV_TYPENAME* output);
|
|
|
|
// add polynomials (inplace)
|
|
int POLYNOMIALMV_FUNC(add_inplace) (POLYNOMIALMV_TYPENAME input, POLYNOMIALMV_TYPENAME* inout);
|
|
// not inplace
|
|
int POLYNOMIALMV_FUNC(add) (POLYNOMIALMV_TYPENAME input1, POLYNOMIALMV_TYPENAME input2, POLYNOMIALMV_TYPENAME* output);
|
|
|
|
// multiply a polynomial by a scalar
|
|
int POLYNOMIALMV_FUNC(multiply_scalar) (POLYNOMIALMV_TYPENAME polynomial, POLYNOMIALMV_COEF_TYPE num);
|
|
|
|
// multiply polynomials
|
|
int POLYNOMIALMV_FUNC(prod) (POLYNOMIALMV_TYPENAME input1, POLYNOMIALMV_TYPENAME input2, POLYNOMIALMV_TYPENAME* output);
|
|
|
|
// order factors
|
|
int POLYNOMIALMV_FUNC(order) (POLYNOMIALMV_TYPENAME polynomial);
|
|
|
|
// print
|
|
int POLYNOMIALMV_FUNC(print) (POLYNOMIALMV_TYPENAME polynomial);
|