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(); }
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(); }
public StateVM(OutputState model) { _model = model; _bits = new bool[_model.Width]; }