qartvm 0.9.0 copy "qartvm: ^0.9.0" to clipboard
qartvm: ^0.9.0 copied to clipboard

qartvm (pronounced 'kar-toom') is a Quantum Computing Simulation package for Dart & Flutter

example/main.dart

import 'dart:async';
import 'dart:io';

import 'matrix_inversion.dart' as _matrix_inversion;
import 'superposition.dart' as _superposition;
import 'bell_state.dart' as _bell_state;
import 'one_qubit_full_adder.dart' as _one_qubit_full_adder;
import 'two_qubit_full_adder.dart' as _two_qubit_full_adder;
import 'three_qubit_full_adder.dart' as _three_qubit_full_adder;
import 'multi_controlled_swap.dart' as _multi_controlled_swap;
import 'qubit_teleportation.dart' as _qubit_teleportation;
import 'fredkin_implementation.dart' as _fredkin_implementation;
import 'inverse_qft_decoder.dart' as _inverse_qft_decoder;
import 'phase_kickback.dart' as _phase_kickback;
import 'modulo_multiplier.dart' as _modulo_multiplier;
import 'shor_algorithm.dart' as _shor_algorithm;

final programs = <String, FutureOr Function()>{
  'MATRIX INVERSION': _matrix_inversion.main,
  'SUPERPOSITION': _superposition.main,
  'BELL STATE': _bell_state.main,
  '1-QUBIT FULL ADDER': _one_qubit_full_adder.main,
  '2-QUBIT FULL ADDER': _two_qubit_full_adder.main,
  '3-QUBIT FULL ADDER': _three_qubit_full_adder.main,
  'MULTI-CONTROLLED SWAP': _multi_controlled_swap.main,
  'QUBIT TELEPORTATION': _qubit_teleportation.main,
  'FREDKIN GATE': _fredkin_implementation.main,
  'INVERSE QFT': _inverse_qft_decoder.main,
  'PHASE KICKBACK': _phase_kickback.main,
  'MODULO MULTIPLIER': _modulo_multiplier.main,
  'SHOR ALGORITHM': _shor_algorithm.main,
};

// runs all examples
void main(List<String> args) async {
  args = args.toList();
  final pause = args.contains('pause');
  args.removeWhere((a) => a == 'pause');

  var executed = 0;
  var skipped = 0;
  var failed = 0;

  for (var entry in programs.entries) {
    var exec = args.isEmpty;
    for (var i = 0; i < args.length; i++) {
      if (RegExp(args[i], caseSensitive: false).hasMatch(entry.key)) {
        exec = true;
        break;
      }
    }
    if (exec) {
      print('=================== ${entry.key} ===================');
      print('');
      try {
        executed++;
        final res = entry.value();
        if (res is Future) {
          await res;
        }
      } catch (ex, st) {
        failed++;
        print('FAILED! $ex');
        print(st);
        break;
      }
      print('');
      if (pause) {
        stdin.readLineSync();
      }
    } else {
      skipped++;
      print('=================== ${entry.key} ===================');
      print('Skipped');
      print('');
    }
  }

  print(
    'Executed $executed ${executed > 1 ? 'programs' : 'program'}, $failed failed, $skipped skipped',
  );
}
4
likes
150
points
64
downloads

Documentation

API reference

Publisher

verified publisherd-markey.ovh

Weekly Downloads

qartvm (pronounced 'kar-toom') is a Quantum Computing Simulation package for Dart & Flutter

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

antlr4, squadron

More

Packages that depend on qartvm