Exemplo n.º 1
0
        public bool AddBatch <K>(double scalar, IReadOnlyOrderedMap <K, double> batch, out IReadOnlyOrderedMap <K, double> value)
        {
            var sm = batch as SortedMap <K, double>;

            if (!ReferenceEquals(sm, null))
            {
                double[] newValues = OptimizationSettings.ArrayPool.Take <double>(sm.size);
                double[] buffer    = new double[Vector <double> .Count];
                for (int c = 0; c < Vector <double> .Count; c++)
                {
                    buffer[c] = scalar;
                }
                var tempVector = new System.Numerics.Vector <double>(buffer);
                int i;
                for (i = 0; i < newValues.Length; i = i + Vector <double> .Count)
                {
                    var vec = new Vector <double>(sm.values, i);
                    vec = Vector.Add(vec, tempVector);
                    vec.CopyTo(newValues, i);
                }
                for (; i < newValues.Length; i++)
                {
                    newValues[i] = sm.values[i] + scalar;
                }

                var newKeys = sm.keys.ToArray();
                var newSm   = SortedMap <K, double> .OfSortedKeysAndValues(newKeys, newValues, sm.size, sm.Comparer, false, sm.IsRegular);

                value = newSm;
                return(true);
            }
            throw new NotImplementedException();
        }
Exemplo n.º 2
0
 public IReadOnlyOrderedMap<DateTime, double> MultiplyMap(IReadOnlyOrderedMap<DateTime, double> batch) {
     var sm = new SortedMap<DateTime, double>();
     foreach (var kvp in batch) {
         sm.Add(kvp.Key, kvp.Value * 10.0);
     }
     return sm;
 }
Exemplo n.º 3
0
 /// <summary>
 /// Very straighforward batch operation for testing
 /// </summary>
 public IReadOnlyOrderedMap<DateTime, double> IncrementMap(IReadOnlyOrderedMap<DateTime, double> batch) {
     var sm = new SortedMap<DateTime, double>();
     foreach (var kvp in batch) {
         sm.Add(kvp.Key, kvp.Value + 1.0);
     }
     return sm;
 }
Exemplo n.º 4
0
        public bool AddBatch <K>(double scalar, IReadOnlyOrderedMap <K, double> batch, out IReadOnlyOrderedMap <K, double> value)
        {
            var sm = batch as SortedMap <K, double>;

            if (!ReferenceEquals(sm, null))
            {
                double[] newValues = new double[sm.size];
                Yeppp.Core.Add_V64fS64f_V64f(sm.values, 0, scalar, newValues, 0, sm.size);
                //Yeppp.Math.Log_V64f_V64f(sm.values, 0, newValues, 0, sm.size);
                K[] newKeys;
                if (!sm.IsReadOnly)
                {
                    newKeys = sm.keys.ToArray();
                }
                else
                {
                    OptimizationSettings.ArrayPool.Borrow(sm.keys);
                    newKeys = sm.keys;
                }
                var newSm = SortedMap <K, double> .OfSortedKeysAndValues(newKeys, newValues, sm.size, sm.Comparer, false, sm.IsRegular);

                value = newSm;
                return(true);
            }
            throw new NotImplementedException();
        }
Exemplo n.º 5
0
        //[Test]
        //public void CouldAddWithSimdMathProvider() {

        //    var sm = new SortedChunkedMap<DateTime, double>();
        //    var count = 1000;

        //    for (int i = 0; i < count; i++) {
        //        sm.Add(DateTime.UtcNow.Date.AddSeconds(i), i);
        //    }

        //    var sw = new Stopwatch();
        //    sw.Start();
        //    var sum = 0.0;
        //    for (int rounds = 0; rounds < 10000; rounds++) {
        //        var bmvc = new BatchMapValuesCursor<DateTime, double, double>(sm.GetCursor,
        //            (v) => v + 3.1415926, SimdMathProviderSample); //
        //        while (bmvc.MoveNext()) {
        //            sum += bmvc.CurrentValue;
        //        }
        //    }
        //    sw.Stop();

        //    Console.WriteLine("Elapsed msec: {0}", sw.ElapsedMilliseconds);
        //    Console.WriteLine("Ops: {0}", Math.Round(0.000001 * count * 10000 * 1000.0 / (sw.ElapsedMilliseconds * 1.0), 2));
        //    Console.WriteLine(sum);
        //    var c = 0;
        //    //foreach (var kvp in sm2)
        //    //{
        //    //    Assert.AreEqual(c + 1, kvp.Value);
        //    //    c++;
        //    //}

        //}


        public IReadOnlyOrderedMap <DateTime, double> MathProviderSample(IReadOnlyOrderedMap <DateTime, double> batch)
        {
            var mathProviderImpl = new MathProviderImpl() as IVectorMathProvider;
            IReadOnlyOrderedMap <DateTime, double> sm2;
            var ok = mathProviderImpl.AddBatch(3.1415926, batch, out sm2);

            return(sm2);
        }
Exemplo n.º 6
0
        public IReadOnlyOrderedMap <DateTime, double> YeppMathProviderSample(IReadOnlyOrderedMap <DateTime, double> batch)
        {
            var mathProviderImpl = new Spreads.NativeMath.YepppMathProvider();
            IReadOnlyOrderedMap <DateTime, double> sm2;
            var ok = mathProviderImpl.AddBatch(3.1415926, batch, out sm2);

            return(sm2);
        }
Exemplo n.º 7
0
        public IReadOnlyOrderedMap <DateTime, double> MultiplyMap(IReadOnlyOrderedMap <DateTime, double> batch)
        {
            var sm = new SortedMap <DateTime, double>();

            foreach (var kvp in batch)
            {
                sm.Add(kvp.Key, kvp.Value * 10.0);
            }
            return(sm);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Very straighforward batch operation for testing
        /// </summary>
        public IReadOnlyOrderedMap <DateTime, double> IncrementMap(IReadOnlyOrderedMap <DateTime, double> batch)
        {
            var sm = new SortedMap <DateTime, double>();

            foreach (var kvp in batch)
            {
                sm.Add(kvp.Key, kvp.Value + 1.0);
            }
            return(sm);
        }
Exemplo n.º 9
0
        public bool SumBatch <K>(double scalar, IReadOnlyOrderedMap <K, double> batch, out double value)
        {
            var sm = batch as SortedMap <K, double>;

            if (!ReferenceEquals(sm, null))
            {
                double[] newValues = new double[sm.size];
                //Yeppp.Core.Add_V64fS64f_V64f(sm.values, 0, scalar, newValues, 0, sm.size);
                value = Yeppp.Core.Sum_V64f_S64f(sm.values, 0, sm.size);
                return(true);
            }
            throw new NotImplementedException();
        }
Exemplo n.º 10
0
        public ContractsTests(IReadOnlyOrderedMap <K, V> testSeries,
                              SortedMap <K, V> materializedSeries,
                              SortedMap <K, V> ephemeralSeries = null)
        {
            if (testSeries == null)
            {
                throw new ArgumentNullException(nameof(testSeries));
            }
            if (materializedSeries == null)
            {
                throw new ArgumentNullException(nameof(materializedSeries));
            }
            _testSeries         = testSeries;
            _materializedSeries = materializedSeries;
            _ephemeralSeries    = ephemeralSeries;

            if (ephemeralSeries != null)
            {
                var eqc = EqualityComparer <V> .Default;
                // TODO (UX) Spreads signature conflicts with LINQ, easy to fix but not very convenient
                var intersect = materializedSeries.Zip(ephemeralSeries, (l, r) => {
                    if (!eqc.Equals(l, r))
                    {
                        throw new ArgumentException("materializedSeries and ephemeralSeries contain different values for the same keys");
                    }
                    else
                    {
                        return(l);
                    }
                });
                if (intersect.IsEmpty)
                {
                    foreach (var kvp in materializedSeries.Take(10))
                    {
                        ephemeralSeries[kvp.Key] = kvp.Value;
                    }
                }
            }
        }
Exemplo n.º 11
0
        public int Append(IReadOnlyOrderedMap <K, Vdest> appendMap, AppendOption option)
        {
            var count = _innerMap.Append(appendMap.Map(_destToSrc), option);

            return(count);
        }
Exemplo n.º 12
0
 public int Append(IReadOnlyOrderedMap <K, SortedMap <K, V> > appendMap, AppendOption option)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 13
0
 public bool MapBatch <K, V, V2>(FSharpFunc <V, V2> mapF, IReadOnlyOrderedMap <K, V> batch, out IReadOnlyOrderedMap <K, V2> value)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 14
0
 public bool AddBatch <K>(IReadOnlyOrderedMap <K, double> left, IReadOnlyOrderedMap <K, double> right, out IReadOnlyOrderedMap <K, double> value)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 15
0
 public OMEnumerator(IReadOnlyOrderedMap <TKey, TValue> source)
 {
     Source = source;
 }
Exemplo n.º 16
0
 public IReadOnlyOrderedMap<DateTime, double> YeppMathProviderSample(IReadOnlyOrderedMap<DateTime, double> batch) {
     var mathProviderImpl = new Spreads.NativeMath.YepppMathProvider();
     IReadOnlyOrderedMap<DateTime, double> sm2;
     var ok = mathProviderImpl.AddBatch(3.1415926, batch, out sm2);
     return sm2;
 }
Exemplo n.º 17
0
 public IReadOnlyOrderedMap<DateTime, double> MathProviderSample(IReadOnlyOrderedMap<DateTime, double> batch)
 {
     var mathProviderImpl = new MathProviderImpl() as IVectorMathProvider;
     IReadOnlyOrderedMap<DateTime, double> sm2;
     var ok = mathProviderImpl.AddBatch(3.1415926, batch, out sm2);
     return sm2;
 }