docs: public void equation(String equation , Object ...variables ) {
          if( variables.length >= 25 )
              throw new IllegalArgumentException("Too many variables!  At most 25");
  
          if( !(mat instanceof DMatrixRMaj))
              return;
  
          Equation eq = new Equation();
  
          String nameThis = "A";
          int offset = 0;
          if( variables.length > 0 && variables[0] instanceof String ) {
              nameThis = (String)variables[0];
              offset = 1;
  
              if( variables.length%2 != 1 )
                  throw new IllegalArgumentException("Expected and odd length for variables");
          } else {
              if( variables.length%2 != 0 )
                  throw new IllegalArgumentException("Expected and even length for variables");
          }
          eq.alias((DMatrixRMaj)mat,nameThis);
  
          for( int i = offset; i < variables.length; i += 2 ) {
              if( !(variables[i+1] instanceof String))
                  throw new IllegalArgumentException("String expected at variables index "+i);
              Object o = variables[i];
              String name = (String)variables[i+1];
  
              if( SimpleBase.class.isAssignableFrom(o.getClass())) {
                  eq.alias(((SimpleBase)o).getDDRM(),name);
              } else if( o instanceof DMatrixRMaj) {
                  eq.alias((DMatrixRMaj)o, name);
              } else if( o instanceof Double ){
                  eq.alias((Double)o,name);
              } else if( o instanceof Integer ){
                  eq.alias((Integer)o,name);
              } else {
                  String type = o == null ? "null" : o.getClass().getSimpleName();
                  throw new IllegalArgumentException("Variable type not supported by Equation! "+type);
              }
          }
  
          // see if the assignment is implicit
          if( !equation.contains("=")) {
              equation = nameThis+" = "+equation;
          }
  
          eq.process(equation);
      }