示例#1
0
        public void Update(Register rootRegister, RegisterPartModel?regModel = null)
        {
            Register register = rootRegister;

            if (regModel.HasValue)
            {
                _selectedRegister = regModel.Value;
            }

            if (_selectedRegister.HasValue && _selectedRegister.Value.Width < rootRegister.Width)
            {
                register = rootRegister[_selectedRegister.Value.OffsetToRoot, _selectedRegister.Value.Width];
            }

            _states.Clear();

            IReadOnlyDictionary <ulong, Complex> amplitudes = register.GetAmplitudes();

            if (amplitudes != null)
            {
                foreach (ulong state in amplitudes.Keys)
                {
                    OutputState newState = new OutputState(state, amplitudes[state], register.Width);
                    _states.Add(newState);
                }
            }
            else
            {
                IReadOnlyDictionary <ulong, double> probabilities = register.GetProbabilities();
                foreach (ulong state in probabilities.Keys)
                {
                    OutputState newState = new OutputState(state, probabilities[state], register.Width);
                    _states.Add(newState);
                }
            }
            OnOutputChanged();
        }
示例#2
0
        public void Update(Register rootRegister, RegisterPartModel? regModel = null)
        {
            Register register = rootRegister;

            if (regModel.HasValue)
            {
                _selectedRegister = regModel.Value;
            }

            if (_selectedRegister.HasValue && _selectedRegister.Value.Width < rootRegister.Width)
            {
                register = rootRegister[_selectedRegister.Value.OffsetToRoot, _selectedRegister.Value.Width];
            }

            _states.Clear();

            IReadOnlyDictionary<ulong, Complex> amplitudes = register.GetAmplitudes();
            if (amplitudes != null)
            {
                foreach (ulong state in amplitudes.Keys)
                {
                    OutputState newState = new OutputState(state, amplitudes[state], register.Width);
                    _states.Add(newState);
                }
            }
            else
            {
                IReadOnlyDictionary<ulong, double> probabilities = register.GetProbabilities();
                foreach (ulong state in probabilities.Keys)
                {
                    OutputState newState = new OutputState(state, probabilities[state], register.Width);
                    _states.Add(newState);
                }
            }
            OnOutputChanged();
        }
示例#3
0
 public StateVM(OutputState model)
 {
     _model = model;
     _bits = new bool[_model.Width];
 }