D4.java 4.33 KB
/**
 *
 */
package is2.data;

/**
 * @author Dr. Bernd Bohnet, 30.10.2010
 * 
 *         This class computes the mapping of features to the weight vector.
 */
final public class D4 extends DX {
	private long shift;
	private long h;

	private final Long2IntInterface _li;

	public D4(Long2IntInterface li) {
		_li = li;
	}

	@Override
	final public void clean() {
		v0 = 0;
		v1 = 0;
		v2 = 0;
		v3 = 0;
		v4 = 0;
		v5 = 0;
		v6 = 0;
		v7 = 0;
		v8 = 0;
		shift = 0;
		h = 0;
	}

	@Override
	final public void cz3() {
		if (v0 < 0 || v1 < 0 || v2 < 0) {
			h = -1;
			return;
		}

		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1);
		shift *= a2;
	}

	final public long c3() {
		if (v0 < 0 || v1 < 0 || v2 < 0) {
			h = -1;
			return h;
		}

		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1);
		shift *= a2;
		return h;
	}

	@Override
	final public void cz4() {
		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0) {
			h = -1;
			return;
		}

		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
		shift *= a3;
	}

	final public long c4() {
		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0) {
			h = -1;
			return h;
		}

		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
		shift *= a3;
		return h;
	}

	@Override
	final public void cz5() {

		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0) {
			h = -1;
			return;
		}

		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2) + v4 * (shift *= a3);
		shift *= a4;

	}

	final public long c5() {

		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0) {
			h = -1;
			return h;
		}

		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2) + v4 * (shift *= a3);
		shift *= a4;
		return h;
	}

	@Override
	final public void cz6() {

		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
			h = -1;
			return;
		}

		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
		h += v4 * (shift *= a3) + v5 * (shift *= a4);
		shift *= a5;
	}

	final public long c6() {

		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
			h = -1;
			return h;
		}

		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
		h += v4 * (shift *= a3) + v5 * (shift *= a4);
		shift *= a5;
		return h;
	}

	@Override
	final public long cs(int b, int v) {
		if (h < 0) {
			h = -1;
			return h;
		}

		h += v * shift;
		shift *= b;
		return h;

	}

	@Override
	final public void csa(int b, int v, IFV f) {
		if (h < 0) {
			h = -1;
			return;
		}

		h += v * shift;
		shift *= b;
		f.add(_li.l2i(h));
	}

	@Override
	final public long csa(int b, int v) {
		if (h < 0) {
			h = -1;
			return -1;
		}

		h += v * shift;
		shift *= b;
		return h;
	}

	@Override
	public final long getVal() {
		return h;
	}

	@Override
	public final void map(IFV f, long l) {
		if (l > 0)
			f.add(this._li.l2i(l));
	}

	/**
	 * @param f
	 */
	final public void add(IFV f) {
		f.add(_li.l2i(h));
	}

	@Override
	final public void cz7() {
		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
			h = -1;
			return;
		}

		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
		h += v4 * (shift *= a3) + v5 * (shift *= a4) + v6 * (shift *= a5);
		shift *= a6;

	}

	final public long c7() {
		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
			h = -1;
			return h;
		}

		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
		h += v4 * (shift *= a3) + v5 * (shift *= a4) + v6 * (shift *= a5);
		shift *= a6;
		return h;
	}

	/**
	 *
	 */
	@Override
	final public void cz8() {
		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0) {
			h = -1;
			return;
		}

		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
		h += v4 * (shift *= a3) + v5 * (shift *= a4) + v6 * (shift *= a5) + v7 * (shift *= a6);
		shift *= a7;
	}

	final public void cz9() {
		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0 || v8 < 0) {
			h = -1;
			return;
		}

		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
		h += v4 * (shift *= a3) + v5 * (shift *= a4) + v6 * (shift *= a5) + v7 * (shift *= a6) + v8 * (shift *= a7);
		shift *= a8;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see is2.data.DX#computeLabeValue(short, short)
	 */
	@Override
	public int computeLabeValue(int label, int shift) {
		return label * shift;
	}

	@Override
	public void fix() {

	}

}