V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alsoooooo
V2EX  ›  编程

Julia 代码完善(签合同、无著作权)

  •  
  •   alsoooooo · 2020-11-21 10:14:50 +08:00 via iPhone · 2572 次点击
    这是一个创建于 1450 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Julia 代码完善(签合同、无著作权)

    代码量:1400 行
    酬劳:1000 元人民币
    时限:3 个工作日

    要求及内容
    ( 1 )非常熟悉 Julia 编程,并具有开发经验
    ( 2 )了解 Fortran 语言,有参考书辅助可以读懂 Fortran 代码
    ( 3 )了解软件工程的基本原则
    ( 4 )懂一点英文
    现有 1400 行 Julia 代码半成品,是由机器翻译脚本从 Fortran 翻译而得来的。请在保持代码整体结构的前提下,将此代码完善至可以运行,并对测试例子得出与原 Fortran 代码相同的结果。在完善的过程中需要对每一个 function 自行设计两个 unit test 实例,并完成每个 function 的 unit test 。

    代码片段示例
    Fortran 源代码
    -图
    待完善的 Julia 代码半成品
    -图

    请联系 [email protected]
    第 1 条附言  ·  2020-11-21 19:11:27 +08:00
    烦劳版主删帖,我太穷了,不配跟你们打交道
    13192262269
        1
    13192262269  
       2020-11-21 11:50:46 +08:00
    会 Julia 的,三个工作日,1000rmb,有点少了,老哥
    alsoooooo
        2
    alsoooooo  
    OP
       2020-11-21 12:06:57 +08:00 via iPhone
    会 Julia 和工作日以及酬劳有关系吗?
    alsoooooo
        3
    alsoooooo  
    OP
       2020-11-21 12:13:59 +08:00 via iPhone
    机器翻译的代码示例


    function get_kgroup(nk_irr,nsymq,ski,rg,pg,nnp,gk,gshift,kphase) # #N[811]
    #implicit none #LABEL[#FORTRAN_CONTROL[implicit]] #N[812]
    #integer,intent(in) :: nk_irr, nsymq,rg(3,3,nsymq),pg(3,nsymq),nnp #LABEL[#FORTRAN_CONTROL[integer]] #N[813]
    #real(8),intent(in) :: ski(3,nk_irr) #LABEL[#FORTRAN_CONTROL[real]] #N[814]
    #logical,intent(out) :: gk(nk_irr,nsymq) #LABEL[#FORTRAN_CONTROL[logical]] #N[815]
    #integer,intent(out) :: gshift(3,nk_irr,nsymq) #LABEL[#FORTRAN_CONTROL[integer]] #N[816]
    #complex(8),intent(out) :: kphase(nk_irr,nsymq) #LABEL[#FORTRAN_CONTROL[complex]] #N[817]
    # #N[818]
    #integer :: ik,iop,jop,kop,tmp2(3) #LABEL[#FORTRAN_CONTROL[integer]] #N[819]
    #logical :: flag #LABEL[#FORTRAN_CONTROL[logical]] #N[820]
    #real(8) :: err=0.00001, tmp(3) #LABEL[#FORTRAN_CONTROL[real]] #N[821]
    #real(8),parameter :: pi = acos(-1d0) #LABEL[#FORTRAN_CONTROL[real]] #N[822]
    #complex(8),parameter :: ii = (0,1) #LABEL[#FORTRAN_CONTROL[complex]] #N[823]
    # #N[824]
    gk = false # #N[825]
    flag = false # #N[826]
    kphase = 1e0 # #N[827]
    # #N[828]
    # #N[829]
    for ik = 1 : nk_irr # #N[830]
    for iop = 1 : nsymq # #N[831]
    tmp[1] = sum(rg[1,:,iop]*ski[:,ik])-ski[1,ik] # #N[832]
    tmp[2] = sum(rg[2,:,iop]*ski[:,ik])-ski[2,ik] # #N[833]
    tmp[3] = sum(rg[3,:,iop]*ski[:,ik])-ski[3,ik] # #N[834]
    gshift[1,ik,iop] = nint(tmp[1]) # #N[835]
    gshift[2,ik,iop] = nint(tmp[2]) # #N[836]
    gshift[3,ik,iop] = nint(tmp[3]) # #N[837]
    # #N[838]
    gk[ik,iop] = (abs(tmp[1]-gshift[1,ik,iop])<err) && &(abs(tmp[2]-gshift[2,ik,iop])<err) && &(abs(tmp[3]-gshift[3,ik,iop])<err) # #N[841]
    # #N[842]
    end # #LABEL[#FORTRAN_END[for]] #N[843]
    end # #LABEL[#FORTRAN_END[for]] #N[844]
    # #N[845]
    for ik = 1 : nk_irr # #N[846]
    for iop = 1 : nsymq # #N[847]
    kphase[ik,iop] = exp(-ii*sum(ski[:,ik]*pg[:,iop])*2*pi/nnp) # #N[848]
    end # #LABEL[#FORTRAN_END[for]] #N[849]
    end # #LABEL[#FORTRAN_END[for]] #N[850]
    # #N[851]
    end # #LABEL[#FORTRAN_END[subroutine]get_kgroup] #N[852]
    # #N[853]
    # #N[854]
    alsoooooo
        4
    alsoooooo  
    OP
       2020-11-21 12:15:40 +08:00 via iPhone
    上面对应的原 Fortran 代码


    subroutine get_kgroup(Nk_irr,nsymq,SKI,rg,pg,nnp,gk,Gshift,kphase)
    implicit none
    integer,intent(in) :: Nk_irr, nsymq,rg(3,3,nsymq),pg(3,nsymq),nnp
    real(8),intent(in) :: SKI(3,Nk_irr)
    logical,intent(out) :: gk(Nk_irr,nsymq)
    integer,intent(out) :: Gshift(3,Nk_irr,nsymq)
    complex(8),intent(out) :: kphase(Nk_irr,nsymq)

    integer :: ik,iop,jop,kop,tmp2(3)
    logical :: flag
    real(8) :: err=0.00001, tmp(3)
    real(8),parameter :: pi = acos(-1d0)
    complex(8),parameter :: ii = (0,1)

    gk = .false.
    flag = .false.
    kphase=1d0


    do ik=1,Nk_irr
    do iop=1,nsymq
    tmp(1)=sum(rg(1,:,iop)*SKI(:,ik))-SKI(1,ik)
    tmp(2)=sum(rg(2,:,iop)*SKI(:,ik))-SKI(2,ik)
    tmp(3)=sum(rg(3,:,iop)*SKI(:,ik))-SKI(3,ik)
    Gshift(1,ik,iop)=nint(tmp(1))
    Gshift(2,ik,iop)=nint(tmp(2))
    Gshift(3,ik,iop)=nint(tmp(3))

    gk(ik,iop)=(abs(tmp(1)-Gshift(1,ik,iop))<err).and.&
    &(abs(tmp(2)-Gshift(2,ik,iop))<err).and.&
    &(abs(tmp(3)-Gshift(3,ik,iop))<err)

    end do
    end do

    do ik=1,Nk_irr
    do iop=1,nsymq
    kphase(ik,iop)=exp(-ii*sum(SKI(:,ik)*pg(:,iop))*2*pi/nnp)
    end do
    end do

    end subroutine get_kgroup
    alsoooooo
        5
    alsoooooo  
    OP
       2020-11-21 12:16:56 +08:00 via iPhone
    手快的话一上午就能弄完,我说三天是上限
    8a9a09dw12
        6
    8a9a09dw12  
       2020-11-21 12:24:47 +08:00
    简单看了一下挺简单的,要求我也都符合。
    但是我不愿意干,
    估算了一下大概 8 小时的工作量吧
    干外包一般是按时薪的三倍算,所以月薪超过 22 * 1000 / 3 = 7333.333333333333 都不该接这个傻逼活
    alsoooooo
        7
    alsoooooo  
    OP
       2020-11-21 12:33:56 +08:00 via iPhone
    楼上没看出来我这是 step in door
    你直接给我 door on face
    优秀
    yolee599
        8
    yolee599  
       2020-11-21 13:30:21 +08:00 via Android
    发错地方了,在这你是找不到人做的,你应该发外包网站
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   899 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:42 · PVG 04:42 · LAX 12:42 · JFK 15:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.