@Override public Object visitAssignMv(GAPPAssignMv gappAssignMv, Object arg) { return new GAPPAssignMv( (GAPPMultivector) GAPPValueHolderCopier.copyValueHolder(gappAssignMv.getDestination()), copyPosSelectorset(gappAssignMv.getSelectors()), copyValueset(gappAssignMv.getValues())); }
@Override public Object visitAssignMv(GAPPAssignMv gappAssignMv, Object arg) { result.append("assignMv "); printMultivector(gappAssignMv.getDestination()); printPosSelectors(gappAssignMv.getSelectors()); result.append(" = "); printValueSet(gappAssignMv.getValues()); result.append(";\n"); return null; }
LinkedList<GAPPConstant> delVariables = new LinkedList<GAPPConstant>(); PosSelectorset selSet = gappAssignMv.getSelectors(); Valueset valSet = gappAssignMv.getValues();
@Override public Object visitAssignMv(GAPPAssignMv gappAssignMv, Object arg) { curLine++; access(gappAssignMv.getDestination()); return null; }
public GAPPBaseInstruction createBaseInstruction(String cmd) { InstructionType instr = InstructionType.valueOf(cmd); switch (instr) { case assignMv: return new GAPPAssignMv(null); case assignInputsVector: return new GAPPAssignInputsVector(null); case calculateMv: return new GAPPCalculateMv(null, null, null, null); case dotVectors: GAPPMultivector m = null; return new GAPPDotVectors(m, null, null); case resetMv: return new GAPPResetMv(null, 0); case setMv: return new GAPPSetMv(null, null, null, null); case setVector: return new GAPPSetVector(null, null); } return null; }
@Override public Object visitAssignMv(GAPPAssignMv gappAssignMv, Object arg) { final String destMv = GAPPOpenCLCodeGenerator.getVarName(gappAssignMv.getDestination().getName()); Integer thisMvSetCount = mvBladeMap.get(destMv).size(); int selCount = 0; for(GAPPValueHolder val : gappAssignMv.getValues()) { final String bladeCoeff = getBladeCoeff(destMv,thisMvSetCount); result.append(bladeCoeff); result.append(" = "); result.append(val.toString()); result.append(";\n"); mvBladeMap.get(destMv).put(gappAssignMv.getSelectors().get(selCount++).getIndex(),bladeCoeff); ++thisMvSetCount; } return null; }
@Override public Object visitAssignMv(GAPPAssignMv gappAssignMv, Object arg) { multivectors.add(gappAssignMv.getDestination().getName()); return null; }
@Override public Object visitConstant(Constant constant, Object arg) { GAPPMultivector mvTmp = gappCreator.createMv(); PosSelectorset selDestSet = new PosSelectorset(); selDestSet.add(new PosSelector(0, algebra.getBlade(0).toString())); Valueset valSet = new Valueset(); valSet.add(new GAPPConstant((constant.isNegated() ? -1 : 1) * constant.getValue())); gappCreator.gapp.addInstruction(new GAPPAssignMv(mvTmp, selDestSet, valSet)); return mvTmp; }
@Override public Object visitAssignMv(GAPPAssignMv gappAssignMv, Object arg) { MultivectorWithValues destination = getMultivector(gappAssignMv.getDestination().getName()); PosSelectorset selector = gappAssignMv.getSelectors(); int selCount = selector.size(); for (int sel = 0; sel < selCount; sel++) { GAPPValueHolder scalarVar = gappAssignMv.getValues().get(sel); double value = (scalarVar.isVariable()) ? getVariableValue(((GAPPVariable) scalarVar).getName()) : ((GAPPConstant) scalarVar).getValue(); destination.getEntries()[selector.get(sel).getIndex()] = value; } return null; }
@Override public Object visitConstant(Constant constant, Object arg) { //arg must be filled! GAPPMultivectorComponent destination = (GAPPMultivectorComponent) arg; PosSelectorset selSet = new PosSelectorset(); selSet.add(new PosSelector(destination.getBladeIndex(), algebra.getBlade(destination.getBladeIndex()).toString())); Valueset valSet = new Valueset(); valSet.add(new GAPPConstant(((constant.isNegated()) ? -1 : 1) * constant.getValue())); gapp.addInstruction(new GAPPAssignMv(new GAPPMultivector(destination.getName()), selSet, valSet)); return null; }