nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 19 Apr 2024 12:47



Reply to topic  [ 22 posts ]  Go to page Previous  1, 2
Троичные вычисления на языке программирования Golang 
Author Message
Online
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 657
Location: Russia, S.- Peterburg
Reply with quote
Проект trigo

Trinary logic in Go language.

Ссылка: https://github.com/kpmy/trigo

Code:
/* троичная логика */
var TRUE Trit = Trit{N: false, T: true}
var FALSE Trit = Trit{N: false, T: false}
var NIL Trit = Trit{N: true, T: false}

type Trit struct {
   N bool
   T bool
}

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)


06 Sep 2021 21:27
Profile WWW
Online
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 657
Location: Russia, S.- Peterburg
Reply with quote
https://github.com/askfind/goTernaryArithmetic.git

- Реализованы логические операции с TRIT-1 (тритами)
- Добавлен тип данных TRITS-32 (слово из тритов)
- Выполнена оптимизация скорости выполнения операций

Code:
// Таб.1 Алфавит троичной симметричной системы счисления
// +--------------------------+-------+-------+-------+
// | Числа                    |  -1   |   0   |   1   |
// +--------------------------+-------+-------+-------+
// | Логика                   | false |  nil  | true  |
// +--------------------------+-------+-------+-------+
// | Логика                   |   f   |   n   |   t   |
// +--------------------------+-------+-------+-------+
// | Символы                  |   -   |     0   |     +   |
// +--------------------------+-------+-------+-------+
// | Символы                  |   N   |     Z   |     P   |
// +--------------------------+-------+-------+-------+
// | Символы                  |   N   |     O   |     P   |
// +--------------------------+-------+-------+-------+
// | Символы                  |   0   |     i   |     1   |
// +--------------------------+-------+-------+-------+
// | Символы                  |   v   |     0   |     ^   |
// +--------------------------+-------+-------+-------+


Benchmark Test

```sh
go test -bench=.
```
Quote:
goos: linux
goarch: amd64

Benchmark
pow 343.8 ns/op
shift_ts 0.374 ns/op
add_half_slowly_t 4.17 ns/op
add_full_t 11.5 ns/op
mul_t 7.95 ns/op
sum_t 5.32 ns/op
get_trit 0.391 ns/op
sgn_trs 67.7 ns/op
shift_trs 0.752 ns/op
add_trs 480 ns/op
sub_trs 486 ns/op
int2trs 0.392 ns/op
trs2int 0.389 ns/op
PASS
ok _

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)


07 Sep 2021 12:29
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Извините за оффтоп... :oops: очень понравилась Ваша новая аватарка со смыслом! :lol:

Image

_________________
iLavr


07 Sep 2021 13:25
Profile
Online
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 657
Location: Russia, S.- Peterburg
Reply with quote
Lavr wrote:
Извините за оффтоп... :oops: очень понравилась Ваша новая аватарка со смыслом! :lol:

Image


В антикварном магазине искал монету 3 копейки 1958 года выпуска. Мне хотелось купить.

В год запуска первого образца троичного "Сетунь" монетные заводы выпустили ограниченным тиражом партию монет.

На рынке цена за редкую монету 3 копейки 1958 года может достигать 100 000 руб.

Сейчас на такие деньги можно купить российский компьютер "Эльбрус". :rotate:

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)


07 Sep 2021 21:34
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
askfind wrote:
На рынке цена за редкую монету 3 копейки 1958 года может достигать 100 000 руб.

Я в курсе, поэтому и написал Вам то, что выше написал... :wink:

Ну и Вам теперь не надо писать фразу типа:"Добавлю и я свои 3 копейки..." :ebiggrin:

_________________
iLavr


08 Sep 2021 07:36
Profile
Online
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 657
Location: Russia, S.- Peterburg
Reply with quote
Обсуждение "Реализация троичных чисел в двоичной памяти и операции ARM"

На 1 трит необходимо 2 бита.

Биты <-> Триты
32 бита - это 16 трит.
64 бита - это 32 трита.

ARM, RISC-V
binaryRAM32[2] <-> tritRAM32[1] - троичное число 32 трита
binaryRAM64[2] <-> tritRAM64[1] - троичное число 64 трита

tritRAM64[1]
uint8_t l; /* длина троичного числа в тритах */
uint64_t t1; /* троичное число FALSE,TRUE */
uint64_t t0; /* троичное число NIL */

// Таб.1 Алфавит троичной симметричной системы счисления
// +--------------------------+-------+-------+-------+
// | Числа | -1 | 0 | 1 |
// +--------------------------+-------+-------+-------+

Преобразование int -> trit
trit= -1 -> {t1=0, t0=1}
trit= +1 -> {t1=1, t0=1}
trit= 01 -> {t1=1 or t1=0 , t0=0}

Примечание:
- Троичное число (поле тритов):
trs32 = t31...t0
- Троичное число в бинарной памяти
addr1 binary32 = b31...b0 ( t1 ) / две ячейки памяти
addr0 binary32 = b31...b0 ( t0 ) \

===========================================
Троичное число +T[32].

1) Как получить +T[32] -> -T[32] ?

Троичное число в бинарной памяти
+T[32]
addr1 b31...b0 ( t1 ) / две ячейки памяти
addr0 b31...b0 ( t0 ) \

-T[32]
addr1 NOT( b31...b0 ) ( NOT(t1) ) / две ячейки памяти
addr0 b31...b0 ( t0 ) \

Итого: Одна операция NOT ARM, RISC-V!

2) Как получить сдвиг вправо/влево T[32] shift(N) ?

Троичное число в бинарной памяти
T[32]
addr1 b31...b0 ( t1 ) / две ячейки памяти
addr0 b31...b0 ( t0 ) \

b31...b0 » N ( t1 ) » N
b31...b0 » N ( t0 ) » N

Итого: Две операции ARM
LSR addr1,#N Логический сдвиг вправо
LSR addr0,#N Логический сдвиг вправо

Домашнее задание для участников!

Как реализовать троичные операции на процессоре ARM?

- троичное умножение: ternary1 AND ternary2
- троичное сложение: ternary1 OR ternary2

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)


12 Apr 2023 14:49
Profile WWW
Online
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 657
Location: Russia, S.- Peterburg
Reply with quote
goTernaryArithmetic на языках Golang, С


Новости

1. Библиотека троичной арифметики, библиотека тритов и троичных чисел для реализации эмуляторов троичных процессоров или вычислителей.

2. Добавлены файлы на языке С, которые вызываются из языка Golang. Цель - высокая производительность операций над тритами и троичными числами.

3. Кросс-платформенная компиляция для запуска приложения на разных операционных системах с архитектурами x86_32, x86_64, ARM, MIPS. RISC-V.

4. Тестирование функций. Измерение производительности.

Дерево файлов проекта:

$ tree -L 1
.
├── go.mod
├── goTernaryArithmetic.go
├── goTernaryArithmetic_test.go
├── gpl-3.0.md
├── LICENSE.txt
├── README.md
├── trslib.c
└── trslib.h

0 directories, 8 files

ТЕСТ

$ go run goTernaryArithmetic.go

# command-line-arguments
cgo-gcc-prolog:47:33: warning: unused variable '_cgo_a' [-Wunused-variable]
Test call function trslib -----------
-------------------------------
Hello from inline C
0.5168780223752157
{[49 50 51 52 53 54 55 56] [57 48]}
{[48 57 56 55 54 53 52 51 50 49]}
-------------------------------
Test ternary functions -----------
- calculate trit-1 --------------
Set trit:
P
N
M
N
false
true
- add_full_t --------------
{1 1} {0 1}
- calculate trits-32 --------------
--- Operation Setun-1958 ---
--------------------------------


Ссылка на проект: https://github.com/askfind/goTernaryArithmetic.git


Attachments:
WCiIesxzpNM.jpg
WCiIesxzpNM.jpg [ 9.82 KiB | Viewed 2225 times ]

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
13 Apr 2023 11:51
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 22 posts ]  Go to page Previous  1, 2

Who is online

Users browsing this forum: askfind and 33 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.