private ScaleInfo CreateScaleInfo(IDictionary context, AtomicReaderContext readerContext) { var leaves = ReaderUtil.GetTopLevelContext(readerContext).Leaves; float minVal = float.PositiveInfinity; float maxVal = float.NegativeInfinity; foreach (AtomicReaderContext leaf in leaves) { int maxDoc = leaf.Reader.MaxDoc; FunctionValues vals = m_source.GetValues(context, leaf); for (int i = 0; i < maxDoc; i++) { float val = vals.SingleVal(i); if ((J2N.BitConversion.SingleToRawInt32Bits(val) & (0xff << 23)) == 0xff << 23) { // if the exponent in the float is all ones, then this is +Inf, -Inf or NaN // which don't make sense to factor into the scale function continue; } if (val < minVal) { minVal = val; } if (val > maxVal) { maxVal = val; } } } if (minVal == float.PositiveInfinity) { // must have been an empty index minVal = maxVal = 0; } var scaleInfo = new ScaleInfo { MinVal = minVal, MaxVal = maxVal }; context[this] = scaleInfo; return(scaleInfo); }
/// <summary> /// NOTE: This was floatVal() in Lucene /// </summary> public override float SingleVal(int doc) { float val = vals.SingleVal(doc); return((val >= outerInstance.m_min && val <= outerInstance.m_max) ? targets.SingleVal(doc) : (outerInstance.m_defaultVal == null ? val : defaults.SingleVal(doc))); }
/// <summary> /// NOTE: This was floatVal() in Lucene /// </summary> public override float SingleVal(int doc) { return(ifVals.BoolVal(doc) ? trueVals.SingleVal(doc) : falseVals.SingleVal(doc)); }
/// <summary> /// NOTE: This was floatVal() in Lucene /// </summary> public override float SingleVal(int doc) { return(vals.SingleVal(doc) * outerInstance.m_slope + outerInstance.m_intercept); }
protected override float Func(int doc, FunctionValues aVals, FunctionValues bVals) { return((float)Math.Pow(aVals.SingleVal(doc), bVals.SingleVal(doc))); }
/// <summary> /// NOTE: This was floatVal() in Lucene /// </summary> public override float SingleVal(int doc) { return((vals.SingleVal(doc) - minSource) * scale + outerInstance.m_min); }
/// <summary> /// NOTE: This was floatVal() in Lucene /// </summary> public override float SingleVal(int doc) { return(outerInstance.m_a / (outerInstance.m_m * vals.SingleVal(doc) + outerInstance.m_b)); }
/// <summary> /// NOTE: This was floatVal() in Lucene /// </summary> public override void SingleVal(int doc, float[] vals) { vals[0] = x.SingleVal(doc); vals[1] = y.SingleVal(doc); }
protected override float Func(int doc, FunctionValues aVals, FunctionValues bVals) { return(aVals.SingleVal(doc) / bVals.SingleVal(doc)); }