objets/CAppelFonctionComplexeNVar.js

/*
 * MathGraph32 Javascript : Software for animating online dynamic mathematics figures
 * https://www.mathgraph32.org/
 * @Author Yves Biton (yves.biton@sesamath.net)
 * @License: GNU AGPLv3 https://www.gnu.org/licenses/agpl-3.0.html
 */
import CAppelFonctionNVar from './CAppelFonctionNVar'
export default CAppelFonctionComplexeNVar
/**
 * Objet d'un arbre binaire de calcul représentant un appel de fonction complexe utilisateur
 * à n variables.
 * @constructor
 * @extends CAppelFonctionNVar
 * @param {CListeObjets} listeProprietaire  La liste propriétaire.
 * @param {number} nbVar  Le nombre de variables de la fonction
 * @param {CFoncNVar} fonctionAssociee  La fonction appliquée à l'opérande.
 * @param {CCb[]} operandes  Tableau de CCb représentant les opérandes.
 * @returns {CAppelFonctionComplexeNVar}
 */
function CAppelFonctionComplexeNVar (listeProprietaire, nbVar, fonctionAssociee, operandes) {
  CAppelFonctionNVar.call(this, listeProprietaire, nbVar, fonctionAssociee, operandes)
}
CAppelFonctionComplexeNVar.prototype = new CAppelFonctionNVar()
CAppelFonctionComplexeNVar.prototype.constructor = CAppelFonctionComplexeNVar
CAppelFonctionComplexeNVar.prototype.superClass = 'CAppelFonctionNVar'
CAppelFonctionComplexeNVar.prototype.className = 'CAppelFonctionComplexeNVar'

CAppelFonctionComplexeNVar.prototype.getClone = function (listeSource, listeCible) {
  const operandeClone = new Array(this.nbVar)
  for (let i = 0; i < this.nbVar; i++) { operandeClone[i] = this.operandes[i].getClone(listeSource, listeCible) }
  const ind1 = listeSource.indexOf(this.fonctionAssociee)
  return new CAppelFonctionComplexeNVar(listeCible, this.nbVar, listeCible.get(ind1, 'CAppelFonctionComplexeNVar'),
    operandeClone)
}

CAppelFonctionComplexeNVar.prototype.getCopie = function () {
  const operandeCopie = new Array(this.nbVar)
  for (let i = 0; i < this.nbVar; i++) operandeCopie[i] = this.operandes[i].getCopie()
  return new CAppelFonctionComplexeNVar(this.listeProprietaire, this.nbVar, this.fonctionAssociee, operandeCopie)
}

CAppelFonctionComplexeNVar.prototype.calculAvecValeursRemplacees = function (bfrac) {
  const nbvar = this.fonctionAssociee.nombreVariables()
  const tabcal = new Array(this.fonctionAssociee.nombreVariables())
  for (let i = 0; i < nbvar; i++) {
    tabcal[i] = this.operandes[i].calculAvecValeursRemplacees(bfrac)
  }
  return new CAppelFonctionComplexeNVar(this.listeProprietaire, nbvar, this.fonctionAssociee, tabcal)
}