public double weightedGeometricMean_as_double() {
		if (!weightsSupplied) {
			System.out.println("weightedGeometricMean_as_double: no weights supplied - unweighted value returned");
			return this.geometricMean_as_double();
		} else {
			boolean holdW = Stat.weightingOptionS;
			if (weightingReset) {
				if (weightingOptionI) {
					Stat.weightingOptionS = true;
				} else {
					Stat.weightingOptionS = false;
				}
			}
			double gmean = 0.0D;
			switch (type) {
			case 1:
				double[] dd = this.getArray_as_double();
				double[] ww = this.getArray_as_double();
				gmean = Stat.geometricMean(dd, ww);
				break;
			case 12:
				BigDecimal[] bd = this.getArray_as_BigDecimal();
				BigDecimal[] wd = this.getArray_as_BigDecimal();
				gmean = Stat.geometricMean(bd, wd);
				bd = null;
				wd = null;
				break;
			case 14:
				throw new IllegalArgumentException("Complex cannot  be converted to double");
			default:
				throw new IllegalArgumentException("This type number, " + type + ", should not be possible here!!!!");

			}
			Stat.weightingOptionS = holdW;
			return gmean;
		}
	}