All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jpmml.evaluator.ReportingDoubleValue Maven / Gradle / Ivy

There is a newer version: 1.6.5
Show newest version
/*
 * Copyright (c) 2017 Villu Ruusmann
 *
 * This file is part of JPMML-Evaluator
 *
 * JPMML-Evaluator is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * JPMML-Evaluator is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with JPMML-Evaluator.  If not, see .
 */
package org.jpmml.evaluator;


public class ReportingDoubleValue
    extends DoubleValue
    implements HasReport
{

    private org.jpmml.evaluator.Report report = null;

    public ReportingDoubleValue(double value, org.jpmml.evaluator.Report report) {
        super(value);
        setReport(report);
        report(new StringBuilder(256).append("").append(value).append("").toString());
    }

    public ReportingDoubleValue(double value, org.jpmml.evaluator.Report report, String expression) {
        super(value);
        setReport(report);
        if (expression!= null) {
            report(expression);
        }
    }

    @Override
    public ReportingDoubleValue copy() {
        org.jpmml.evaluator.Report report = getReport();
        return new ReportingDoubleValue(super.value, report.copy(), null);
    }

    @Override
    public ReportingDoubleValue add(double value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.add(value));
        if (hasExpression()) {
            report(new StringBuilder(256).append("").append(getExpression()).append("").append(value).append("").append("").toString());
        } else {
            report(new StringBuilder(256).append("").append(value).append("").toString());
        }
        return result;
    }

    @Override
    public ReportingDoubleValue add(org.jpmml.evaluator.Value value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.add(value));
        if (hasExpression()) {
            report(new StringBuilder(256).append("").append(getExpression()).append("").append(value.doubleValue()).append("").append("").toString());
        } else {
            report(new StringBuilder(256).append("").append(value.doubleValue()).append("").toString());
        }
        return result;
    }

    @Override
    public ReportingDoubleValue add(double coefficient, Number factor) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.add(coefficient, factor));
        if (hasExpression()) {
            report(new StringBuilder(256).append("").append(getExpression()).append("").append("").append(coefficient).append("").append("").append(factor.doubleValue()).append("").append("").toString());
        } else {
            report(new StringBuilder(256).append("").append("").append(coefficient).append("").append("").append(factor.doubleValue()).append("").append("").toString());
        }
        return result;
    }

    @Override
    public ReportingDoubleValue add(double coefficient, Number firstFactor, Number secondFactor) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.add(coefficient, firstFactor, secondFactor));
        if (hasExpression()) {
            report(new StringBuilder(256).append("").append(getExpression()).append("").append("").append(coefficient).append("").append("").append(firstFactor.doubleValue()).append("").append("").append(secondFactor.doubleValue()).append("").append("").toString());
        } else {
            report(new StringBuilder(256).append("").append("").append(coefficient).append("").append("").append(firstFactor.doubleValue()).append("").append("").append(secondFactor.doubleValue()).append("").append("").toString());
        }
        return result;
    }

    @Override
    public ReportingDoubleValue add(double coefficient, Number... factors) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.add(coefficient));
        if (hasExpression()) {
            report(new StringBuilder(256).append("").append(getExpression()).append("").append("").append(coefficient).append("").append(format(factors)).append("").toString());
        } else {
            report(new StringBuilder(256).append("").append("").append(coefficient).append("").append(format(factors)).append("").toString());
        }
        return result;
    }

    @Override
    public ReportingDoubleValue add(double coefficient, Number factor, int exponent) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.add(coefficient, factor, exponent));
        if (hasExpression()) {
            report(new StringBuilder(256).append("").append(getExpression()).append("").append("").append(coefficient).append("").append("").append("").append(factor.doubleValue()).append("").append("").append(((double) exponent)).append("").append("").toString());
        } else {
            report(new StringBuilder(256).append("").append("").append(coefficient).append("").append("").append("").append(factor.doubleValue()).append("").append("").append(((double) exponent)).append("").append("").toString());
        }
        return result;
    }

    @Override
    public ReportingDoubleValue subtract(double value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.subtract(value));
        if (hasExpression()) {
            report(new StringBuilder(256).append("").append(getExpression()).append("").append(value).append("").append("").toString());
        } else {
            report(new StringBuilder(256).append("").append("").append(value).append("").append("").toString());
        }
        return result;
    }

    @Override
    public ReportingDoubleValue subtract(org.jpmml.evaluator.Value value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.subtract(value));
        if (hasExpression()) {
            report(new StringBuilder(256).append("").append(getExpression()).append("").append(value.doubleValue()).append("").append("").toString());
        } else {
            report(new StringBuilder(256).append("").append("").append(value.doubleValue()).append("").append("").toString());
        }
        return result;
    }

    @Override
    public ReportingDoubleValue multiply(double value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.multiply(value));
        report(new StringBuilder(256).append("").append(getExpression()).append("").append(value).append("").append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue multiply(org.jpmml.evaluator.Value value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.multiply(value));
        report(new StringBuilder(256).append("").append(getExpression()).append("").append(value.doubleValue()).append("").append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue multiply(Number factor, double exponent) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.multiply(factor, exponent));
        report(new StringBuilder(256).append("").append(getExpression()).append("").append("").append(factor.doubleValue()).append("").append("").append(exponent).append("").append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue divide(double value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.divide(value));
        report(new StringBuilder(256).append("").append(getExpression()).append("").append(value).append("").append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue divide(org.jpmml.evaluator.Value value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.divide(value));
        report(new StringBuilder(256).append("").append(getExpression()).append("").append(value.doubleValue()).append("").append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue residual(org.jpmml.evaluator.Value value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.residual(value));
        report(new StringBuilder(256).append("1").append("").append(value.doubleValue()).append("").append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue square() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.square());
        report(new StringBuilder(256).append("").append(getExpression()).append("2").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue power(double value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.power(value));
        report(new StringBuilder(256).append("").append(getExpression()).append("{0}").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue reciprocal() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.reciprocal());
        report(new StringBuilder(256).append("1").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue elliott() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.elliott());
        report(new StringBuilder(256).append("elliott").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue exp() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.exp());
        report(new StringBuilder(256).append("").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue gauss() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.gauss());
        report(new StringBuilder(256).append("gauss").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue inverseLogit() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.inverseLogit());
        report(new StringBuilder(256).append("logit").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue inverseCloglog() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.inverseCloglog());
        report(new StringBuilder(256).append("cloglog").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue inverseLoglog() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.inverseLoglog());
        report(new StringBuilder(256).append("loglog").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue inverseLogc() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.inverseLogc());
        report(new StringBuilder(256).append("logc").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue inverseNegbin(double value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.inverseNegbin(value));
        report(new StringBuilder(256).append("negbin").append(getExpression()).append("").append(value).append("").append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue inverseOddspower(double value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.inverseOddspower(value));
        report(new StringBuilder(256).append("oddspower").append(getExpression()).append("").append(value).append("").append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue inversePower(double value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.inversePower(value));
        report(new StringBuilder(256).append("").append(getExpression()).append("1").append("").append(value).append("").append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue inverseCauchit() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.inverseCauchit());
        report(new StringBuilder(256).append("cauchit").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue inverseProbit() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.inverseProbit());
        report(new StringBuilder(256).append("probit").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue sin() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.sin());
        report(new StringBuilder(256).append("").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue cos() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.cos());
        report(new StringBuilder(256).append("").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue arctan() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.arctan());
        report(new StringBuilder(256).append("2").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue tanh() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.tanh());
        report(new StringBuilder(256).append("").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue threshold(double value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.threshold(value));
        report(new StringBuilder(256).append("threshold").append(getExpression()).append("").append(value).append("").append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue relu() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.relu());
        report(new StringBuilder(256).append("0").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue abs() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.abs());
        report(new StringBuilder(256).append("").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue gaussSim(double value) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.gaussSim(value));
        report(new StringBuilder(256).append("gaussSim").append(getExpression()).append("").append(value).append("").append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue restrict(double lowValue, double highValue) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.restrict(lowValue, highValue));
        report(new StringBuilder(256).append("").append("").append(lowValue).append("").append("").append("").append(highValue).append("").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue round() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.round());
        report(new StringBuilder(256).append("round").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue ceiling() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.ceiling());
        report(new StringBuilder(256).append("").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue floor() {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.floor());
        report(new StringBuilder(256).append("").append(getExpression()).append("").toString());
        return result;
    }

    @Override
    public ReportingDoubleValue denormalize(double leftOrig, double leftNorm, double rightOrig, double rightNorm) {
        ReportingDoubleValue result = ((ReportingDoubleValue) super.denormalize(leftOrig, leftNorm, rightOrig, rightNorm));
        report(new StringBuilder(256).append("denormalize").append(getExpression()).append("").append(leftOrig).append("").append("").append(leftNorm).append("").append("").append(rightOrig).append("").append("").append(rightNorm).append("").append("").toString());
        return result;
    }

    private void report(String expression) {
        org.jpmml.evaluator.Report report = getReport();
        org.jpmml.evaluator.Report.Entry entry = new org.jpmml.evaluator.Report.Entry(expression, getValue());
        report.add(entry);
    }

    private boolean hasExpression() {
        org.jpmml.evaluator.Report report = getReport();
        return report.hasEntries();
    }

    private String getExpression() {
        org.jpmml.evaluator.Report report = getReport();
        org.jpmml.evaluator.Report.Entry entry = report.tailEntry();
        return entry.getExpression();
    }

    @Override
    public org.jpmml.evaluator.Report getReport() {
        return this.report;
    }

    private void setReport(org.jpmml.evaluator.Report report) {
        this.report = report;
    }

    private static String format(Number... values) {
        StringBuilder sb = new StringBuilder((values.length* 32));
        for (Number value: values) {
            sb.append("").append(value.doubleValue()).append("").toString();
        }
        return sb.toString();
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy