public Complex mean_as_Complex() {
		Complex mean = Complex.zero();
		switch (type) {
		case 1:
			double[] dd = this.getArray_as_double();
			double meand = 0.0D;
			for (int i = 0; i < length; i++)
				meand += dd[i];
			meand /= length;
			mean = new Complex(meand);
			break;
		case 12:
			BigDecimal[] bd = this.getArray_as_BigDecimal();
			BigDecimal meanbd = BigDecimal.ZERO;
			for (int i = 0; i < length; i++)
				meanbd = meanbd.add(bd[i]);
			meanbd = meanbd.divide(new BigDecimal((double) length), BigDecimal.ROUND_HALF_UP);
			mean = new Complex(meanbd.doubleValue());
			bd = null;
			meanbd = null;
			break;
		case 14:
			Complex[] cc = this.getArray_as_Complex();
			for (int i = 0; i < length; i++)
				mean = mean.plus(cc[i]);
			mean = mean.over(new Complex(length));
			break;
		default:
			throw new IllegalArgumentException("This type number, " + type + ", should not be possible here!!!!");
		}
		return mean;
	}