public void toQuaternion( QuaternionElem<U, R, ?> out )
	{
		R v0 = null;
		R vl = null;
		Iterator<HashSet<BigInteger>> it = map.keySet().iterator();
		while( it.hasNext() )
		{
			HashSet<BigInteger> key = it.next();
			R val = map.get(key);
			if( !( dim.equals( BigInteger.valueOf( key.size() ) ) ) )
			{
				out.setVal(key, val);
			}
			else
			{
				if( key.size() == 0 )
				{
					v0 = val;
				}
				vl = val;
			}
		}
		if( vl != null )
		{
			vl = vl.negate();
			HashSet<BigInteger> key = new HashSet<BigInteger>();
			if( v0 == null )
			{
				out.setVal(key, vl);
			}
			else
			{
				out.setVal(key, v0.add(vl));
			}
		}
	}