public void setWithAddend (ConstantMatrix m, double addend) { if (m instanceof DenseMatrix) { assert (m.singleSize() == values.length); for (int i = 0; i < values.length; i++) values[i] = ((DenseMatrix)m).values[i] + addend; } else for (int i = m.numLocations()-1; i >= 0; i--) values[m.indexAtLocation(i)] = m.valueAtLocation(i) + addend; }
public boolean almostEquals (ConstantMatrix m2) { if (getNumDimensions () != m2.getNumDimensions ()) { return false; } if (numLocations () != m2.numLocations ()) { return false; } int[] dims1 = new int [getNumDimensions ()]; int[] dims2 = new int [getNumDimensions ()]; getDimensions (dims1); m2.getDimensions (dims2); for (int i = 0; i < dims1.length; i++) { if (dims1 [i] != dims2 [i]) { return false; } } for (int i = 0; i < numLocations(); i++) { if (!Maths.almostEquals (valueAtLocation (i), m2.valueAtLocation (i))) { return false; } } return true; }
public void elementwiseTimesEquals (ConstantMatrix m, double factor) { if (m instanceof DenseMatrix) { assert (m.singleSize() == values.length); for (int i = 0; i < values.length; i++) values[i] *= ((DenseMatrix)m).values[i] * factor; } else for (int i = m.numLocations()-1; i >= 0; i--) values[m.indexAtLocation(i)] *= m.valueAtLocation(i) * factor; }
public void elementwiseDivideEquals (ConstantMatrix m, double factor) { if (m instanceof DenseMatrix) { assert (m.singleSize() == values.length); for (int i = 0; i < values.length; i++) values[i] /= ((DenseMatrix)m).values[i] * factor; } else for (int i = m.numLocations()-1; i >= 0; i--) values[m.indexAtLocation(i)] /= m.valueAtLocation(i) * factor; }
public void setWithFactor (ConstantMatrix m, double factor) { if (m instanceof DenseMatrix) { assert (m.singleSize() == values.length); for (int i = 0; i < values.length; i++) values[i] = ((DenseMatrix)m).values[i] * factor; } else for (int i = m.numLocations()-1; i >= 0; i--) values[m.indexAtLocation(i)] = m.valueAtLocation(i) * factor; }
public void elementwiseTimesEquals (ConstantMatrix m) { if (m instanceof DenseMatrix) { assert (m.singleSize() == values.length); for (int i = 0; i < values.length; i++) values[i] *= ((DenseMatrix)m).values[i]; } else for (int i = m.numLocations()-1; i >= 0; i--) values[m.indexAtLocation(i)] *= m.valueAtLocation(i); }
public void elementwiseDivideEquals (ConstantMatrix m) { if (m instanceof DenseMatrix) { assert (m.singleSize() == values.length); for (int i = 0; i < values.length; i++) values[i] /= ((DenseMatrix)m).values[i]; } else for (int i = m.numLocations()-1; i >= 0; i--) values[m.indexAtLocation(i)] /= m.valueAtLocation(i); }
public void set (ConstantMatrix m) { if (m instanceof DenseMatrix) { assert (m.singleSize() == values.length); System.arraycopy (((DenseMatrix)m).values, 0, values, 0, values.length); } else for (int i = m.numLocations()-1; i >= 0; i--) values[m.indexAtLocation(i)] = m.valueAtLocation(i); }
public double dotProduct (ConstantMatrix m) { double ret = 0; if (m instanceof DenseMatrix) { assert (m.singleSize() == values.length); for (int i = 0; i < values.length; i++) ret += values[i] * ((DenseMatrix)m).values[i]; } else { for (int i = m.numLocations()-1; i >= 0; i--) if(m.indexAtLocation(i) < values.length)//fix problem ret += values[m.indexAtLocation(i)] * m.valueAtLocation(i); else{ // System.out.println(m.indexAtLocation(i) + ":" + values.length); // throw new ArrayIndexOutOfBoundsException(m.indexAtLocation(i)); } } return ret; }
public void plusEquals (ConstantMatrix m) { if (m instanceof DenseMatrix) { assert (m.singleSize() == values.length); for (int i = 0; i < values.length; i++) { Double.isInfinite(m.valueAtLocation(i))) { double newValue = m.valueAtLocation(i); values[i] += m.valueAtLocation(i); for (int i = m.numLocations()-1; i >= 0; i--) { if(Double.isInfinite(values[m.indexAtLocation(i)]) && Double.isInfinite(((DenseMatrix)m).values[i])) { double newValue = m.valueAtLocation(i); if((newValue * values[m.indexAtLocation(i)]) < 0) { values[m.indexAtLocation(i)] = 0.0; values[m.indexAtLocation(i)] += newValue; values[m.indexAtLocation(i)] += m.valueAtLocation(i);
public void plusEquals (ConstantMatrix m, double factor) { if (m instanceof DenseMatrix) { assert (m.singleSize() == values.length); for (int i = 0; i < values.length; i++) { Double.isInfinite(m.valueAtLocation(i))) { double newValue = factor*(m.valueAtLocation(i)); values[i] += (m.valueAtLocation(i) * factor); for (int i = m.numLocations()-1; i >= 0; i--){ if(Double.isInfinite(values[m.indexAtLocation(i)]) && Double.isInfinite(m.valueAtLocation(i))) { double newValue = factor*m.valueAtLocation(i); if((newValue * values[m.indexAtLocation(i)]) < 0) { values[m.indexAtLocation(i)] = 0.0; values[m.indexAtLocation(i)] += newValue; values[m.indexAtLocation(i)] += m.valueAtLocation(i) * factor;
public void equalsPlus (double factor, ConstantMatrix m) { if (m instanceof DenseMatrix) { assert (m.singleSize() == values.length); for (int i = 0; i < values.length; i++) { for (int i = m.numLocations()-1; i >= 0; i--) { if(Double.isInfinite(values[m.indexAtLocation(i)]) && Double.isInfinite(((DenseMatrix)m).values[i])) { double lhs = factor * values[m.indexAtLocation(i)]; double rhs = m.valueAtLocation(i); values[m.indexAtLocation(i)] = 0.0; values[m.indexAtLocation(i)] = lhs + rhs; values[m.indexAtLocation(i)] = factor * values[m.indexAtLocation(i)] + m.valueAtLocation(i);