public Complex weightedMean_as_Complex() {
		if (!weightsSupplied) {
			System.out.println("weightedMean_as_Complex: no weights supplied - unweighted mean returned");
			return this.mean_as_Complex();
		} else {
			boolean holdW = Stat.weightingOptionS;
			if (weightingReset) {
				if (weightingOptionI) {
					Stat.weightingOptionS = true;
				} else {
					Stat.weightingOptionS = false;
				}
			}
			Complex mean = Complex.zero();
			switch (type) {
			case 1:
				double[] dd = this.getArray_as_double();
				double[] wwd = amWeights.getArray_as_double();
				mean = new Complex(Stat.mean(dd, wwd));
				break;
			case 12:
				BigDecimal[] bd = this.getArray_as_BigDecimal();
				BigDecimal[] wwb = amWeights.getArray_as_BigDecimal();
				mean = new Complex((Stat.mean(bd, wwb)).doubleValue());
				bd = null;
				wwb = null;
				break;
			case 14:
				Complex[] cc = this.getArray_as_Complex();
				Complex[] wwc = amWeights.getArray_as_Complex();
				mean = Stat.mean(cc, wwc);
				break;
			default:
				throw new IllegalArgumentException("This type number, " + type + ", should not be possible here!!!!");
			}
			Stat.weightingOptionS = holdW;
			return mean;
		}
	}