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

org.nd4j.linalg.indexing.functions.StableNumber Maven / Gradle / Ivy

There is a newer version: 1.0.0-M2.1
Show newest version
package org.nd4j.linalg.indexing.functions;


import com.google.common.base.Function;
import org.nd4j.linalg.factory.Nd4j;

/**
 * Returns a stable number based on infinity
 * or nan
 */
public class StableNumber implements Function {
    private Type type;

    public enum Type {
        DOUBLE, FLOAT
    }

    public StableNumber(Type type) {
        this.type = type;
    }

    @Override
    public Number apply(Number number) {
        switch (type) {
            case DOUBLE:
                if (Double.isInfinite(number.doubleValue()))
                    return -Double.MAX_VALUE;
                if (Double.isNaN(number.doubleValue()))
                    return Nd4j.EPS_THRESHOLD;
            case FLOAT:
                if (Float.isInfinite(number.floatValue()))
                    return -Float.MAX_VALUE;
                if (Float.isNaN(number.floatValue()))
                    return Nd4j.EPS_THRESHOLD;
            default:
                throw new IllegalStateException("Illegal type");

        }

    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy