# Revision history [back]

### Why code generates error ? Help wanted ASAP.

work fine as writes in article:

M = 93556643250795678718734474880013829509320385402690660619699653921022012489089

A = 66001598144012865876674115570268990806314506711104521036747533612798434904785

B = 25255205054024371783896605039267101837972419055969636393425590261926131199030

P = (56027910981442853390816693056740903416379421186644480759538594137486160388926, 65533262933617146434438829354623658858649726233622196512439589744498050226926)

Q = (61124499720410964164289905006830679547191538609778446060514645905829507254103, 2595146854028317060979753545310334521407008629091560515441729386088057610440)

F = FiniteField(M)

E = EllipticCurve(F,[A,B])

P = E.point(P)

Q = E.point(Q)

factors, exponents = zip(*factor(E.order()))

primes = [factors[i] ^ exponents[i] for i in range(len(factors))][:-2]

dlogs = []

for fac in primes:

t = int(P.order()) / int(fac)

dlog = discrete_log(t*Q,t*P,operation="+")

dlogs += [dlog]

print("factor: "+str(fac)+", Discrete Log: "+str(dlog)) #calculates discrete logarithm for each prime order


results:

factor: 4, dlog: 2

factor: 3, dlog: 1

factor: 5, dlog: 4

factor: 7, dlog: 1

factor: 137, dlog: 129

factor: 593, dlog: 224

factor: 24337, dlog: 5729

factor: 25589, dlog: 13993

factor: 3637793, dlog: 1730599

factor: 5733569, dlog: 4590572

But I get a error:

----> 3 dlog = discrete_log(tQ,tP,operation="+")

  4     dlogs += [dlog]

5     print("factor: "+str(fac)+", Discrete Log: "+str(dlog)) #calculates discrete logarithm for each prime order


TypeError: unsupported operand type(s) for *: 'float' and 'EllipticCurvePoint_finite_field' Help me PLEEEEEASE edit code for get results like in source ?

 2 None tmonteil 27253 ●31 ●199 ●512 http://wiki.sagemath.o...

### Why code generates error ? Help wanted ASAP.

work fine as writes in article:

M = 93556643250795678718734474880013829509320385402690660619699653921022012489089 93556643250795678718734474880013829509320385402690660619699653921022012489089

A = 66001598144012865876674115570268990806314506711104521036747533612798434904785 66001598144012865876674115570268990806314506711104521036747533612798434904785

B = 25255205054024371783896605039267101837972419055969636393425590261926131199030 25255205054024371783896605039267101837972419055969636393425590261926131199030

P = (56027910981442853390816693056740903416379421186644480759538594137486160388926, 65533262933617146434438829354623658858649726233622196512439589744498050226926) 65533262933617146434438829354623658858649726233622196512439589744498050226926)

Q = (61124499720410964164289905006830679547191538609778446060514645905829507254103, 2595146854028317060979753545310334521407008629091560515441729386088057610440) 2595146854028317060979753545310334521407008629091560515441729386088057610440)

F = FiniteField(M) FiniteField(M)

E = EllipticCurve(F,[A,B]) EllipticCurve(F,[A,B])

P = E.point(P) E.point(P)

Q = E.point(Q) E.point(Q)

factors, exponents = zip(*factor(E.order())) zip(*factor(E.order()))

primes = [factors[i] ^ exponents[i] for i in range(len(factors))][:-2] range(len(factors))][:-2]

dlogs = [] []

for fac in primes: primes:
t = int(P.order()) / int(fac)
dlog = discrete_log(t*Q,t*P,operation="+")
dlogs += [dlog]
print("factor: "+str(fac)+", Discrete Log: "+str(dlog)) #calculates discrete logarithm for each prime order
results: factor: 4, dlog: 2 2

factor: 3, dlog: 1 1

factor: 5, dlog: 4 4

factor: 7, dlog: 1 1

factor: 137, dlog: 129 129

factor: 593, dlog: 224 224

factor: 24337, dlog: 5729 5729

factor: 25589, dlog: 13993 13993

factor: 3637793, dlog: 1730599 1730599

factor: 5733569, dlog: 4590572 4590572

But I get a error: error:

----> 3     dlog = discrete_log(tQ,tP,operation="+") discrete_log(t*Q,t*P,operation="+")

4     dlogs += [dlog]

5     print("factor: "+str(fac)+", Discrete Log: "+str(dlog)) #calculates discrete logarithm for each prime order
TypeError: unsupported operand type(s) for *: 'float' and 'EllipticCurvePoint_finite_field'
Help me PLEEEEEASE edit code for get results like in source  ??** 





 Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license. about | faq | help | privacy policy | terms of service Powered by Askbot version 0.7.59 Please note: Askbot requires javascript to work properly, please enable javascript in your browser, here is how //IE fix to hide the red margin var noscript = document.getElementsByTagName('noscript')[0]; noscript.style.padding = '0px'; noscript.style.backgroundColor = 'transparent'; askbot['urls']['mark_read_message'] = '/s/messages/markread/'; askbot['urls']['get_tags_by_wildcard'] = '/s/get-tags-by-wildcard/'; askbot['urls']['get_tag_list'] = '/s/get-tag-list/'; askbot['urls']['follow_user'] = '/followit/follow/user/{{userId}}/'; askbot['urls']['unfollow_user'] = '/followit/unfollow/user/{{userId}}/'; askbot['urls']['user_signin'] = '/account/signin/'; askbot['urls']['getEditor'] = '/s/get-editor/'; askbot['urls']['apiGetQuestions'] = '/s/api/get_questions/'; askbot['urls']['ask'] = '/questions/ask/'; askbot['urls']['questions'] = '/questions/'; askbot['settings']['groupsEnabled'] = false; askbot['settings']['static_url'] = '/m/'; askbot['settings']['minSearchWordLength'] = 4; askbot['settings']['mathjaxEnabled'] = true; askbot['settings']['sharingSuffixText'] = ''; askbot['settings']['errorPlacement'] = 'after-label'; askbot['data']['maxCommentLength'] = 800; askbot['settings']['editorType'] = 'markdown'; askbot['settings']['commentsEditorType'] = 'rich\u002Dtext'; askbot['messages']['askYourQuestion'] = 'Ask Your Question'; askbot['messages']['acceptOwnAnswer'] = 'accept or unaccept your own answer'; askbot['messages']['followQuestions'] = 'follow questions'; askbot['settings']['allowedUploadFileTypes'] = [ "jpg", "jpeg", "gif", "bmp", "png", "tiff" ]; askbot['data']['haveFlashNotifications'] = true; askbot['data']['activeTab'] = 'questions'; askbot['settings']['csrfCookieName'] = 'asksage_csrf'; askbot['data']['searchUrl'] = ''; /*<![CDATA[*/ $('.mceStatusbar').remove();//a hack to remove the tinyMCE status bar$(document).ready(function(){ // focus input on the search bar endcomment var activeTab = askbot['data']['activeTab']; if (inArray(activeTab, ['users', 'questions', 'tags', 'badges'])) { var searchInput = $('#keywords'); } else if (activeTab === 'ask') { var searchInput =$('#id_title'); } else { var searchInput = undefined; animateHashes(); } var wasScrolled = $('#scroll-mem').val(); if (searchInput && !wasScrolled) { searchInput.focus(); putCursorAtEnd(searchInput); } var haveFullTextSearchTab = inArray(activeTab, ['questions', 'badges', 'ask']); var haveUserProfilePage =$('body').hasClass('user-profile-page'); if ((haveUserProfilePage || haveFullTextSearchTab) && searchInput && searchInput.length) { var search = new FullTextSearch(); askbot['controllers'] = askbot['controllers'] || {}; askbot['controllers']['fullTextSearch'] = search; search.setSearchUrl(askbot['data']['searchUrl']); if (activeTab === 'ask') { search.setAskButtonEnabled(false); } search.decorate(searchInput); } else if (activeTab === 'tags') { var search = new TagSearch(); search.decorate(searchInput); } if (askbot['data']['userIsAdminOrMod']) { $('body').addClass('admin'); } if (askbot['settings']['groupsEnabled']) { askbot['urls']['add_group'] = "/s/add-group/"; var group_dropdown = new GroupDropdown();$('.groups-dropdown').append(group_dropdown.getElement()); } var userRep = $('#userToolsNav .reputation'); if (userRep.length) { var showPermsTrigger = new ShowPermsTrigger(); showPermsTrigger.decorate(userRep); } }); if (askbot['data']['haveFlashNotifications']) {$('#validate_email_alert').click(function(){notify.close(true)}) notify.show(); } var langNav = $('.lang-nav'); if (langNav.length) { var nav = new LangNav(); nav.decorate(langNav); } /*]]>*/ if (typeof MathJax != 'undefined') { MathJax.Hub.Config({ extensions: ["tex2jax.js"], jax: ["input/TeX","output/HTML-CSS"], tex2jax: {inlineMath: [["$","$"],["\$","\$"]]} }); } else { console.log('Could not load MathJax'); } //todo - take this out into .js file$(document).ready(function(){ $('div.revision div[id^=rev-header-]').bind('click', function(){ var revId = this.id.substr(11); toggleRev(revId); }); lanai.highlightSyntax(); }); function toggleRev(id) { var arrow =$("#rev-arrow-" + id); var visible = arrow.attr("src").indexOf("hide") > -1; if (visible) { var image_path = '/m/default/media/images/expander-arrow-show.gif?v=19'; } else { var image_path = '/m/default/media/images/expander-arrow-hide.gif?v=19'; } image_path = image_path + "?v=19"; arrow.attr("src", image_path); \$("#rev-body-" + id).slideToggle("fast"); } for (url_name in askbot['urls']){ askbot['urls'][url_name] = cleanUrl(askbot['urls'][url_name]); }