Помислете за следния код, изпълняващ операции върху комплексни числа с float
на C/C++:
float real_part = log(3.f);
float imag_part = 0.f;
float real_part2 = (imag_part)*(imag_part)-(real_part*real_part);
float imag_part2 = (imag_part)*(real_part)+(real_part*imag_part);
Резултатът ще бъде
real_part2= -1.20695 imag_part2= 0
angle= 3.14159
където angle
е фазата на комплексното число и в този случай е pi
.
Сега разгледайте следния код:
float real_part = log(3.f);
float imag_part = 0.f;
float real_part2 = (-imag_part)*(-imag_part)-(real_part)*(real_part);
float imag_part2 = (-imag_part)*(real_part)+(real_part)*(-imag_part);
Резултатът ще бъде
real_part2= -1.20695 imag_part2= 0
angle= -3.14159
Въображаемата част от резултата е -0
, което прави фазата на резултата -pi
.
Въпреки че все още се изпълнява с основния аргумент на комплексно число и със знаковото свойство на 0
с плаваща запетая, тази промяна е проблем, когато се дефинират функции на комплексни числа. Например, ако се дефинира sqrt
на комплексно число чрез формулата на де Моавър, това ще промени знака на въображаемата част от резултата на грешна стойност.
Как да се справим с този ефект?
float imag_part2 = (-imag_part)*(real_part) ...
има-
. Вcomplex_number3b.y=complex_number3a.x*complex_number3a.y ...
няма-
. Това ли е вашето намерение? - person chux - Reinstate Monica   schedule 29.10.2013imag_part
се променя в знака и в двата случая. Когато изчислявамimag_part2
, променям знака наimag_part
, както забелязахте. При изчисляване наcomplex_number3b
, промяната на знака е в рамките наcomplex_number3a.x
, което е равно на-imag_part
. - person Vitality   schedule 29.10.2013Опитвам се да реша дали персонализираният атрибут за оторизация, който написах, наистина е добра идея.
Сценарий
Да кажем, че имаме колекция от магазини, всеки
Store
има собственик. Само собственикът на магазина може да извършва CRUD операции в магазина. С ИЗКЛЮЧЕНИЕ на потребители сClaim
, което основно отменя изискването за собственост и казва, че могат да извършват CRUD операции във ВСЕКИ магазин.Странична бележка: Използвам Thinktecture и ADFS
Така че направих атрибут
StoreOwnerAuthorize
, чиито параметри("Manage", "Stores")
се използват за проверка дали потребителят има подходящо твърдение за „отмяна“, че не е собственик, но все пак може да премине проверката за оторизация.Не съм сигурен как се чувствам да имам претенция като „ManageStores“ и да извикам базата данни вътре в атрибута. Това ме кара да мисля, че вървя по грешен път, въпреки че постига точно това, от което се нуждая.
API маршрути
API метод
StoreOwnerAuthorizeAttribute
- person Pascal Cuoq   schedule 29.10.2013