Added SampleSet.min and Sampleset.max
This commit is contained in:
		
							parent
							
								
									5e9bf521fa
								
							
						
					
					
						commit
						255541a679
					
				|  | @ -140,3 +140,9 @@ let truncate = (t, ~leftCutoff: option<float>, ~rightCutoff: option<float>) => { | |||
|   let withTruncatedRight = t => rightCutoff |> E.O.dimap(left => truncateRight(t, left), _ => Ok(t)) | ||||
|   t->withTruncatedLeft |> E.R2.bind(withTruncatedRight) | ||||
| } | ||||
| 
 | ||||
| let minOfTwo = (t1: t, t2: t) => map2(~fn=(a, b) => Ok(Js.Math.min_float(a, b)), ~t1, ~t2) | ||||
| let maxOfTwo = (t1: t, t2: t) => map2(~fn=(a, b) => Ok(Js.Math.max_float(a, b)), ~t1, ~t2) | ||||
| 
 | ||||
| let minOfFloat = (t: t, f: float) => samplesMap(~fn=a => Ok(Js.Math.min_float(a, f)), t) | ||||
| let maxOfFloat = (t: t, f: float) => samplesMap(~fn=a => Ok(Js.Math.max_float(a, f)), t) | ||||
|  |  | |||
|  | @ -75,7 +75,7 @@ module Internal = { | |||
|   } | ||||
| } | ||||
| 
 | ||||
| let library = [ | ||||
| let library1 = [ | ||||
|   Function.make( | ||||
|     ~name="fromDist", | ||||
|     ~nameSpace, | ||||
|  | @ -274,3 +274,63 @@ let library = [ | |||
|     (), | ||||
|   ), | ||||
| ] | ||||
| 
 | ||||
| module Comparison = { | ||||
|   let template = (name, inputs, run) => { | ||||
|     FnDefinition.make( | ||||
|       ~name, | ||||
|       ~inputs, | ||||
|       ~run=(inputs, _, _, _) => { | ||||
|         run(inputs) | ||||
|       }, | ||||
|       (), | ||||
|     ) | ||||
|   } | ||||
| 
 | ||||
|   let wrapper = r => | ||||
|     r | ||||
|     ->E.R2.fmap(r => r->Wrappers.sampleSet->Wrappers.evDistribution) | ||||
|     ->E.R2.errMap(SampleSetDist.Error.toString) | ||||
| 
 | ||||
|   let mkBig = (name, withDist, withFloat) => | ||||
|     Function.make( | ||||
|       ~name, | ||||
|       ~nameSpace, | ||||
|       ~requiresNamespace=false, | ||||
|       ~examples=[ | ||||
|         `SampleSet.${name}(SampleSet.fromDist(normal(5,2)), SampleSet.fromDist(normal(6,2)))`, | ||||
|         `SampleSet.${name}(SampleSet.fromDist(normal(5,2)), 3.0)`, | ||||
|         `SampleSet.${name}(4.0, SampleSet.fromDist(normal(6,2)))`, | ||||
|       ], | ||||
|       ~output=ReducerInterface_InternalExpressionValue.EvtDistribution, | ||||
|       ~definitions=[ | ||||
|         template(name, [FRTypeDist, FRTypeDist], inputs => { | ||||
|           switch inputs { | ||||
|           | [IEvDistribution(SampleSet(dist1)), IEvDistribution(SampleSet(dist2))] => | ||||
|             withDist(dist1, dist2)->wrapper | ||||
|           | _ => Error(impossibleError) | ||||
|           } | ||||
|         }), | ||||
|         template(name, [FRTypeDist, FRTypeNumber], inputs => { | ||||
|           switch inputs { | ||||
|           | [IEvDistribution(SampleSet(dist)), IEvNumber(f)] => withFloat(dist, f)->wrapper | ||||
|           | _ => Error(impossibleError) | ||||
|           } | ||||
|         }), | ||||
|         template(name, [FRTypeNumber, FRTypeDist], inputs => { | ||||
|           switch inputs { | ||||
|           | [IEvNumber(f), IEvDistribution(SampleSet(dist))] => withFloat(dist, f)->wrapper | ||||
|           | _ => Error(impossibleError) | ||||
|           } | ||||
|         }), | ||||
|       ], | ||||
|       (), | ||||
|     ) | ||||
| 
 | ||||
|   let library = [ | ||||
|     mkBig("min", SampleSetDist.minOfTwo, SampleSetDist.minOfFloat), | ||||
|     mkBig("max", SampleSetDist.maxOfTwo, SampleSetDist.maxOfFloat), | ||||
|   ] | ||||
| } | ||||
| 
 | ||||
| let library = E.A.append(library1, Comparison.library) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user