@Override public int getNumOfInputsN() { return function.getNumOfInputsN(); }
@Override public int getNumOfOutputsM() { return function.getNumOfOutputsM(); }
@Override public void process(double[] input, DMatrixSparseCSC output) { function.process(input,left,right); CommonOps_DSCC.concatColumns(left,right,output); }
@Override public void process(double[] input, DMatrixSparseCSC output) { function.process(input,left,right); CommonOps_DSCC.concatColumns(left,right,output); }
@Override public void process(double[] input, DMatrixRMaj output) { function.process(input,left,right); CommonOps_DDRM.concatColumns(left,right,output); }
@Override public int getNumOfOutputsM() { return function.getNumOfOutputsM(); }
@Override public int getNumOfInputsN() { return function.getNumOfInputsN(); }
@Override public void process(double[] input, DMatrixRMaj output) { function.process(input,left,right); CommonOps_DDRM.concatColumns(left,right,output); }
@Override public void setFunction(FunctionNtoM function, @Nonnull SchurJacobian<S> jacobian) { this.functionResiduals = function; this.functionJacobian = jacobian; residuals.reshape(jacobian.getNumOfOutputsM(),1); }
@Override protected void functionGradientHessian(DMatrixRMaj x, boolean sameStateAsCost, DMatrixRMaj gradient, HessianSchurComplement<S> hessian) { if( !sameStateAsCost ) functionResiduals.process(x.data,residuals.data); functionJacobian.process(x.data,jacLeft,jacRight); hessian.computeHessian(jacLeft,jacRight); hessian.computeGradient(jacLeft,jacRight,residuals,gradient); }
@Override public void setFunction(FunctionNtoM function, @Nonnull SchurJacobian<S> jacobian) { this.functionResiduals = function; this.functionJacobian = jacobian; residuals.reshape(jacobian.getNumOfOutputsM(),1); }
@Override protected void functionGradientHessian(DMatrixRMaj x, boolean sameStateAsResiduals, DMatrixRMaj gradient, HessianSchurComplement<S> hessian) { if( !sameStateAsResiduals ) functionResiduals.process(x.data,residuals.data); functionJacobian.process(x.data,jacLeft,jacRight); hessian.computeHessian(jacLeft,jacRight); hessian.computeGradient(jacLeft,jacRight,residuals,gradient); }
@Override protected void functionGradientHessian(DMatrixRMaj x, boolean sameStateAsResiduals, DMatrixRMaj gradient, HessianSchurComplement<S> hessian) { if( !sameStateAsResiduals ) functionResiduals.process(x.data,residuals.data); functionJacobian.process(x.data,jacLeft,jacRight); hessian.computeHessian(jacLeft,jacRight); hessian.computeGradient(jacLeft,jacRight,residuals,gradient); }
@Override protected void functionGradientHessian(DMatrixRMaj x, boolean sameStateAsCost, DMatrixRMaj gradient, HessianSchurComplement<S> hessian) { if( !sameStateAsCost ) functionResiduals.process(x.data,residuals.data); functionJacobian.process(x.data,jacLeft,jacRight); hessian.computeHessian(jacLeft,jacRight); hessian.computeGradient(jacLeft,jacRight,residuals,gradient); }